你怎样才能使前瞻非贪婪?我希望第一个案例不匹配任何内容(如第二个案例),但它返回“winnie”。我猜是因为它在“the”之后贪婪地匹配?
str <- "winnie the pooh bear"
## Unexpected
regmatches(str, gregexpr("winnie|bear(?= bear|pooh)", str, perl=T))
# [1] "winnie"
## Expected
regmatches(str, gregexpr("winnie(?= bear|pooh)", str, perl=T))
# character(0)
最佳答案
前瞻应用于 bear
中的 winnie|bear(?= bear|pooh)
而不是 winnie
。如果您希望它同时应用于两者
(?:winnie|bear)(?= bear|pooh)
现在它将适用于两者。
因为
winnie
匹配,ored part bear
从未出现过,也没有前瞻。在第二种情况下
lookahead
应用于 winnie
。所以它失败了。关于regex - 前瞻行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30832006/