说我有字符串“foo1barfoo2foo3bar”
捕获foo1bar,foo2,foo3bar的正则表达式是什么? 每个foo之间的文本(在这种情况下为1 2 3)实际上是可变长度。
我遇到的问题是我现在的正则表达式会捕获foo1bar和foo2foo3bar
当我添加一个非贪婪的量词时,它只捕获foo1 foo2 foo3
使用php btw
答案 0 :(得分:0)
您可以使用负向前瞻匹配,直到下一个“foo”:
preg_match_all("/foo((?!foo).)*/s", "foo1barfoo2foo3bar", $result);
$result[0]
将是一个包含三个匹配项的数组(请注意额外的[0]
)。
["foo1bar", "foo2", "foo3bar"]
仅当您想要捕获换行符时才需要s
修饰符。