正则表达式找到顺序整数
我很难让我的正则表达式代码在PHP中正常工作。这是我的代码:
$array = array(); // Used to satisfy the 3rd argument requirment of preg_match_all.
$regex = '/(012|345|678|987|654|321|123|456|789|876|543|210|234|567|765|432)/';
$subject = '123456';
echo preg_match_all($regex, $subject, $array).'<br />';
print_r($array);
运行此代码时,它将输出:
2
Array
(
[0] => Array
(
[0] => 123
[1] => 456
)
[1] => Array
(
[0] => 123
[1] => 456
)
)
我该怎么办才能匹配123,234,345和456?
提前致谢!
没有找到相关结果
已邀请:
4 个回复
了驳
即可。
扭湘阀柿蹄
输出:
您正在尝试检索主题字符串中彼此重叠的匹配项,这通常是不可能的。但是,在许多情况下,您可以通过将整个正则表达式包装在捕获组中来伪造它,然后将其包装在前瞻中。因为前瞻在匹配时不消耗任何字符,所以正则表达式引擎在每次成功匹配后手动向前移动一个位置,以避免卡在无限循环中。但捕获组仍然有效,因此您可以通常的方式检索捕获的文本。 请注意,我只打印了第一个捕获组的内容(
)。如果我打印了整个数组(
),它看起来像这样:
看到它在ideone上的行动
呢率篓舍烫
但是,正如另一个答案中所建议的那样,正则表达式可能不是在这种情况下使用的正确工具,具体取决于您的更大目标。此外,上述代码可能不是使用正则表达式解决此问题的最有效方式(wrt memory或wrt performance)。这只是一个严格要求的满足要求的解决方案。
磁辫覆氓
返回:
注意:这只适用于并发数字