你怎么能让前瞻不贪婪?我希望第一种情况不匹配任何东西(如第二种情况),但它返回“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)
答案 0 :(得分:4)
前瞻已应用于bear
中的winnie|bear(?= bear|pooh)
,而不是winnie
。如果您希望它同时适用于<{p>}
(?:winnie|bear)(?= bear|pooh)
现在它将适用于两者。
由于winnie
与ored part bear
匹配,因此从未进入过画面,也不是前瞻。
在第二种情况下lookahead
已应用于winnie
。所以它失败了。