在R中,是否可以从正则表达式匹配中提取组捕获?据我所知,grep
个、grepl
个、regexpr
个、gregexpr
个、sub
个或gsub
个都没有返回组捕获的内容.
我需要从编码如下的字符串中提取键值对:
\((.*?) :: (0\.[0-9]+)\)
我总是可以只做多个完全匹配的grep,或者做一些外部(非R)处理,但我希望我可以在R中完成这一切.是否有一个函数或一个包提供了这样的函数来实现这一点?
在R中,是否可以从正则表达式匹配中提取组捕获?据我所知,grep
个、grepl
个、regexpr
个、gregexpr
个、sub
个或gsub
个都没有返回组捕获的内容.
我需要从编码如下的字符串中提取键值对:
\((.*?) :: (0\.[0-9]+)\)
我总是可以只做多个完全匹配的grep,或者做一些外部(非R)处理,但我希望我可以在R中完成这一切.是否有一个函数或一个包提供了这样的函数来实现这一点?
stringr
个包裹里的str_match()
个就可以了.它返回一个字符矩阵,匹配中的每个组有一列(整个匹配有一列):
> s = c("(sometext :: 0.1231313213)", "(moretext :: 0.111222)")
> str_match(s, "\\((.*?) :: (0\\.[0-9]+)\\)")
[,1] [,2] [,3]
[1,] "(sometext :: 0.1231313213)" "sometext" "0.1231313213"
[2,] "(moretext :: 0.111222)" "moretext" "0.111222"