在R中,是否可以从正则表达式匹配中提取组捕获?就我可以告诉,grep,grepl,regexpr,gregexpr,sub或gsub没有返回组捕获。
我需要从编码的字符串中提取键值对,因此:
\((.*?) :: (0\.[0-9]+)\)
我可以总是只做多个完全匹配的greps,或做一些外(非R)处理,但我希望我可以做到这一切内R.有一个功能或包提供这样的功能这样做吗?
str_match(),从
stringr
包,会做到这一点。它返回一个字符矩阵,每个组在匹配(和一个整个匹配)一列:
> 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"