2017-07-07 61 views
-1

說我有字符串「foo1barfoo2foo3bar」如何找到正則表達式上的最小匹配?

什麼是正則表達式來捕獲foo1bar和Foo2,foo3bar 每個FOO之間的文本(在此情況下1 2 3)是在現實中可變長度。

我遇到的問題是,我現在的正則表達式將捕獲foo1bar和foo2foo3bar

當我添加非貪婪的量詞,它只是捕捉foo1 foo2的foo3

使用PHP BTW

+0

那麼你的正則表達式是什麼? – revo

回答

0

你可以使用負先行匹配,直到下一個「foo」的:

preg_match_all("/foo((?!foo).)*/s", "foo1barfoo2foo3bar", $result); 

$result[0]將與三個MATC陣列hes(注意多餘的[0])。

["foo1bar", "foo2", "foo3bar"] 

s修飾符僅在需要捕獲換行符時才需要。