我试图使用非捕获组与包中的str_extract功能stringr.这是一个例子:
library(stringr)
txt <- "foo"
str_extract(txt,"(?:f)(o+)")
Run Code Online (Sandbox Code Playgroud)
这回来了
"foo"
Run Code Online (Sandbox Code Playgroud)
虽然我希望它只返回
"oo"
Run Code Online (Sandbox Code Playgroud)
喜欢这篇文章:https://stackoverflow.com/a/14244553/3750030
如何在R中使用非捕获组从返回值中删除组的内容,同时使用它进行匹配?
小智 6
当你使用正则表达式时,(?:f)(o+)这将不会捕获,但它肯定会匹配它.
捕获的意思是存储在内存中以进行反向引用,以便它可以用于相同字符串中的重复匹配或替换捕获的字符串.
你误解了那个答案.非捕获组并不意味着不匹配.它被捕获在$1(组1)中,因为之前没有组.
如果您希望仅匹配假设B后跟A,那么您应该positive lookbehind像这样使用.
正则表达式: (?<=f)(o+)
说明:
(?<=f)这将f在以下标记后面显示,但不匹配.
(o+)如果前一个条件为真,这将匹配并捕获为组(此处为$ 1).
| 归档时间: |
|
| 查看次数: |
1390 次 |
| 最近记录: |