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

如何将此正则表达式转换为R正则表达式?,r,regex,R,Regex,我有一个regex的工作块,但我无法让它在R中工作(使用来验证regex是否工作) 我有这个字符串: pbb-nae-49/N2-A.N49AV048.SUP-DAMP 我需要上一个句号之后的所有内容,基本上可以是任何字符(但我认为上一个句号之后不会有空格)。我有这样一个方法,可以将字符串作为一个组来获取: \.([-0-9a-zA-Z\s]+\z) 我也有这个,它的工作原理有点不同(我不确定哪一个能在测试后用真实数据为我提供更好的结果): 这两行都不能提取R中的字符串: tester =

我有一个regex的工作块,但我无法让它在R中工作(使用来验证regex是否工作)

我有这个字符串:

pbb-nae-49/N2-A.N49AV048.SUP-DAMP
我需要上一个句号之后的所有内容,基本上可以是任何字符(但我认为上一个句号之后不会有空格)。我有这样一个方法,可以将字符串作为一个组来获取:

\.([-0-9a-zA-Z\s]+\z)
我也有这个,它的工作原理有点不同(我不确定哪一个能在测试后用真实数据为我提供更好的结果):

这两行都不能提取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
有没有办法解决这个问题?或者我缺少什么?

你可以用

sub(".*\\.(.*)", "\\1", S)
你可以拿着这个

sub(".*\\.(.*)", "\\1", S)

或者另一个选项是
str\u match

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

或者使用
基R
匹配字符(
*
)后接点(
\.
),并捕获一个或多个非点(
[^.]+
)的字符,直到字符串的结尾(
$
)为止,并将其替换为该捕获组的反向引用(
\\1


或者另一个选项是
str\u match

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

或者使用
基R
匹配字符(
*
)后接点(
\.
),并捕获一个或多个非点(
[^.]+
)的字符,直到字符串的结尾(
$
)为止,并将其替换为该捕获组的反向引用(
\\1


如果您需要最后一个点
sub(“.\\\([^.]+),“\\1”,tester)之后的所有内容
如果您需要最后一个点
sub(“.\\\([^.]+),“\\1”,tester)之后的所有内容
是如何引用最后一个组的?关闭。您需要\\1。它指的是括号中的所有内容。哈,是的。。对不起,这就是我的意思,我只是在验证那首曲子是怎么做的。谢谢
“//1”
您是如何引用最后一个组的?关闭。您需要\\1。它指的是括号中的所有内容。哈,是的。。对不起,这就是我的意思,我只是在验证那首曲子是怎么做的。谢谢@但是,我已经在
base R
中注释了一条
stringr
基于高度optimized@lukehawk但是,我已经在
base R
中注释了一个iin
stringr
基于高度优化的
stringi
函数