我有一个像这样的正则表达式(非常简化):
^(ab)*$
并与此匹配:
abababababababab
当我运行它时preg_match
:
preg_match('/$(ab)*$/', 'abababababababab', $matches);
print_r($matches);
我明白了:
Array
(
[0] => abababababababab
[1] => ab
)
而我期望的是:
Array
(
[0] => abababababababab
[1] => ab
[2] => ab
[3] => ab
[4] => ab
[5] => ab
[6] => ab
[7] => ab
[8] => ab
}
我怎样才能得到我所期望的?
(请注意,子表达式可能更复杂,例如([aA][bB])
,并且我希望匹配的表达式按其在主题中的顺序排列。)
通过使用来做到这一点preg_match_all
像这样:
preg_match_all('/(ab)/', 'abababababababab', $matches);
print_r($matches);
请记住preg_match
只提供第一个匹配项preg_match_all
具有相同的功能,但返回全部。另请注意,现在正则表达式已更改。如果您使用星号,它可能会在第一次匹配时消耗整个字符串。但是,您可以尝试类似的方法(ab)*?
使其不贪婪。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)