PHP preg_match_all 在字符串中找不到值

问题描述 投票:0回答:1

我有一个字符串,我想找到两个出现的地方。

$string = "xxxyyy";
preg_match_all('/xxxy|xyyy/', $string, $matches, PREG_OFFSET_CAPTURE);
print_r($matches[0]);

这就是我得到的,但我也想找到 xyyy。

Array
(
    [0] => Array
        (
            [0] => xxxy
            [1] => 0
        )

)

是否有任何参数或我遗漏的东西?我也尝试过这个正则表达式,但没有运气: '/(xxxy|xyyy)/'

php preg-match-all
1个回答
0
投票

您滥用了替代模式。根据文档:

竖线字符用于分隔替代模式。例如,模式 gilbert|sullivan 匹配“gilbert”或“sullivan”。可以出现任意数量的替代项,并且允许使用空替代项(与空字符串匹配)。 匹配过程从左到右依次尝试每个选项,并使用第一个成功的选项。

© www.soinside.com 2019 - 2024. All rights reserved.