使用 PHP 和负向前瞻的正则表达式

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

我有这个字符串

aaa11 bbb1 cccc aaaaa22 bbb2 aaaa444 bbb4 cccc
,我想使用正则表达式,结果如下:

aaa11 bbb1 cccc

aaaa444 bbb4 cccc

我尝试了这个正则表达式

a+[0-9]+.+?(b+[0-9]+).+?(?!a+[0-9+]).+?c+
preg_match_all
但它返回:

aaaa11 bbbb1 ccccc

aaaaa22 bbb2 aaaa444 bbb4 cccc

我尝试使用负前瞻来防止中间出现

a+[0-9+]
,但 id 不起作用。我怎样才能做到这一点?

php regex
1个回答
1
投票

如果我正确阅读了您的要求,则以下模式应该有效:

a+[0-9]* b+[0-9]* c+[0-9]*

示例代码:

$input = "aaa11 bbb1 cccc aaaaa22 bbb2 aaaa444 bbb4 cccc";
preg_match_all("/a+[0-9]* b+[0-9]* c+[0-9]*/", $input, $matches);
print_r($matches[0]);

打印:

Array
(
    [0] => aaa11 bbb1 cccc
    [1] => aaaa444 bbb4 cccc
)
© www.soinside.com 2019 - 2024. All rights reserved.