我有一大堆正则表达式,但我无法在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
任何想法如何解决这个问题?或者我错过了什么?
答案 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)