Regex R中正则表达式的复杂群

Regex R中正则表达式的复杂群,regex,r,Regex,R,在([a-z]+([0-9]+)([a-z])(\w)中添加*,使其成为([a-z]+)([0-9]+)([a-z])(\w*), 如果在我的常规模式中没有*,如何理解结果?使用\\w的模式正在查找任何“单词字符”(=[[:alnum:][unum:][/code>),而您可能需要查找实际的“w”:\\w正在匹配“9”和剩余的字符“874w”没有被取代。如果您想匹配字符串的其余部分,那么为什么不为第四个捕获组使用“+$”呢 gsub( "([a-z]+)([0-9]+)([a-z])(\\w)"

在([a-z]+([0-9]+)([a-z])(\w)中添加
*
,使其成为([a-z]+)([0-9]+)([a-z])(\w*),

如果在我的常规模式中没有
*
,如何理解结果?

使用
\\w
的模式正在查找任何“单词字符”(=
[[:alnum:][unum:][/code>),而您可能需要查找实际的“w”:
\\w
正在匹配“9”和剩余的字符“874w”没有被取代。如果您想匹配字符串的其余部分,那么为什么不为第四个捕获组使用“+$”呢

gsub( "([a-z]+)([0-9]+)([a-z])(\\w)", "\\1", word )  
[1] "xyz"  
gsub( "([a-z]+)([0-9]+)([a-z])(\\w)", "\\2", word )  
[1] "9874"  
gsub( "([a-z]+)([0-9]+)([a-z])(\\w)", "\\3", word )  
[1] "w" 
根据潜在问题的未说明的“规则”,它可能会增加特殊性,将“^”作为前导模式字符,以便匹配从第一个字符开始。

*
意味着“尽可能多地捕获此内容(可能为零)”,而您已经知道的
+
表示“尽可能多地抓住这件事(但前提是至少有一件)”。
gsub( "([a-z]+)([0-9]+)([a-z])(\\w)", "\\1", word )  
[1] "xyz"  
gsub( "([a-z]+)([0-9]+)([a-z])(\\w)", "\\2", word )  
[1] "9874"  
gsub( "([a-z]+)([0-9]+)([a-z])(\\w)", "\\3", word )  
[1] "w" 
 gsub( "([a-z]+)([0-9]+)([a-z])(.+$)", "\\1", word )
[1] "xyz"
> gsub( "([a-z]+)([0-9]+)([a-z])(.+$)", "\\2", word )
[1] "9874"
> gsub( "([a-z]+)([0-9]+)([a-z])(.+$)", "\\3", word )
[1] "w"
> gsub( "([a-z]+)([0-9]+)([a-z])(.+$)", "\\4", word )
[1] "9874w"