/Windows(?=95 |98 |NT )/
--------------------------------------
This only returns "Windows", not include "95", "98" or "NT"/Windows(95|98|NT)
---------------------------------------
This will return "Windows95" or "Windows98" or "WindowsNT".
--------------------------------------
This only returns "Windows", not include "95", "98" or "NT"/Windows(95|98|NT)
---------------------------------------
This will return "Windows95" or "Windows98" or "WindowsNT".
/(Windows(?=95|98|NT)|95)/
/(Windows(95|98|NT)|95)/
(
[0] => Windows
[1] => Windows
)
Array
(
[0] => Windows95
[1] => Windows95
[2] => 95
)
print_r( $ar );preg_match("/(Windows(95|98|NT)|95)/",$s,$ar);
print_r( $ar );
Array
(
[0] => Windows
[1] => Windows
)
Array
(
[0] => Windows95
[1] => Windows95
[2] => 95
)
print_r( $ar );preg_match("/(Windows(95|98|NT)|95)/",$s,$ar);
print_r( $ar );
Array
(
[0] => Windows
[1] => Windows
)
Array
(
[0] => Windows95
[1] => Windows95
[2] => 95
)
将preg_match改为preg_match_all才能正确比较。
/(Windows(95|98|NT)|95)/只能得到一次匹配window(95)差别在于 是否是?=表示被匹配过的部分(将会)参与下规则的匹配,也就是下次匹配从我这里为起点开始匹配。而()不会。