如何将此正则表达式转换为R正则表达式?

时间:2018-03-21 18:03:42

标签: r regex

我有一大堆正则表达式,但我无法在R中工作。(使用https://regex101.com/验证正则表达式是否有效。)

我有这个字符串:

pbb-nae-49/N2-A.N49AV048.SUP-DAMP

我需要在最后一个时期之后的所有内容,基本上可以是任何字符(但我不认为在最后一个时期之后空格会存在)。我有这个用于将字符串作为一个组:

\.([-0-9a-zA-Z\s]+\z)

而且我也有这个,它的工作方式略有不同(我不确定哪个会在测试后用真实数据为我提供更好的结果):

[\w\d\/\.-]+\.([\w-]+)

这些行都不能用于提取R:

中的字符串
tester = "pbb-nae-49/N2-A.N49AV048.SUP-DAMP"
gsub("[\\w\\d\\/\\.-]+\\.([\\w-]+)","POOP",tester) #returns original string
gsub("\\.([-0-9a-zA-Z\\s]+\\z)","POOP",tester) #returns original string

任何想法如何解决这个问题?或者我错过了什么?

2 个答案:

答案 0 :(得分:2)

你可以用

来搞定
sub(".*\\.(.*)", "\\1", S)

答案 1 :(得分:1)

或另一个选项是str_match

library(stringr)
str_match(tester, ".*\\.([^.]+$)")[,2]
#[1] "SUP-DAMP"

或使用base R sub我们匹配字符(.*)后跟一个点(\\.)并捕获一个或多个不是点的字符([^.]+)直到字符串的结尾($)并将其替换为该捕获组的反向引用(\\1

sub(".*\\.([^.]+)", "\\1", tester)