正则表达式 - 在特定单词后面的一组重复单词中查找第一个单词

时间:2013-12-18 16:37:57

标签: regex regex-greedy

我有一个字符串"Foo Bar Foo Bar",我想选择该字符串中的第一个Bar

目前我有: http://regexr.com?37mv1这不太正确

这是我在Foo Bar度过的第一个Foo'Bar'。应该拿起'酒吧'......希望它有意义

1 个答案:

答案 0 :(得分:0)

你可以用这个:

^.*?Foo\s*(Bar)

或更简单:

^.*?(Bar)

或更高效(使用长字符串):

^(?>[^F]++|F(?!oo))*Foo\s*(Bar)

你的模式问题是第一个贪婪的量词.*。此子模式将匹配所有可能的字符,直到字符串/行的结尾,然后正则表达式引擎必须逐个字符返回,直到它找到Foo,但它找到的Foo是最后一个。

如果跟随.*?,则懒惰量词Foo将检查每个字符。

注意:您可以取消选中gskinner中的ig复选框。