我有一个字符串"Foo Bar Foo Bar"
,我想选择该字符串中的第一个Bar
目前我有: http://regexr.com?37mv1这不太正确
这是我在Foo Bar度过的第一个Foo'Bar'。应该拿起'酒吧'......希望它有意义
答案 0 :(得分:0)
你可以用这个:
^.*?Foo\s*(Bar)
或更简单:
^.*?(Bar)
或更高效(使用长字符串):
^(?>[^F]++|F(?!oo))*Foo\s*(Bar)
你的模式问题是第一个贪婪的量词.*
。此子模式将匹配所有可能的字符,直到字符串/行的结尾,然后正则表达式引擎必须逐个字符返回,直到它找到Foo
,但它找到的Foo
是最后一个。
如果跟随.*?
,则懒惰量词Foo
将检查每个字符。
注意:您可以取消选中gskinner中的i
和g
复选框。