我敢肯定,我失去了一些东西很明显这里,但我不能让R来使用非贪婪的正则表达式:非贪婪字符串正则表达式匹配
> library(stringr)
> str_match('xxx aaaab yyy', "a.*?b")
[,1]
[1,] "aaaab"
基本功能相同的行为方式:
> regexpr('a.*?b', 'xxx aaaab yyy')
[1] 5
attr(,"match.length")
[1] 5
attr(,"useBytes")
[1] TRUE
我希望这场比赛是按照 '贪婪' 的评论中http://stat.ethz.ch/R-manual/R-devel/library/base/html/regex.html只是ab
:
默认情况下,重复是贪婪的,所以使用最大可能的重复次数。 这可以通过追加更改为'最小'?给量词。 (还有更多 量词允许近似匹配:请参阅TRE文档。)
请问有人能解释我发生了什么事吗?
更新。什么是疯狂的是,在其他一些情况下,非贪婪模式像预期的那样:
> str_match('xxx <a href="abc">link</a> yyy <h1>Header</h1>', '<a.*>')
[,1]
[1,] "<a href=\"abc\">link</a> yyy <h1>Header</h1>"
> str_match('xxx <a href="abc">link</a> yyy <h1>Header</h1>', '<a.*?>')
[,1]
[1,] "<a href=\"abc\">"
谢谢@ floder - 我完全忘了它总是从左边开始匹配。人们正在长时间讨论它:http://www.nntp.perl.org/group/perl.perl6.language.regex/2000/12/msg507.html –