我正在尝试获取正则表达式,以便在每次找到子组时获取子组。这是我的代码:
$string2 = 'cabbba';
preg_match_all('#c(a(b)*a)#',$string2,$result3,PREG_SET_ORDER);
var_dump($result3);
我的目标是获得''每次作为一个被捕获的组(所以3次)。此代码输出以下内容:
array (size=1)
0 =>
array (size=3)
0 => string 'cabbba' (length=6)
1 => string 'abbba' (length=5)
2 => string 'b' (length=1)
我想让它显示' b'每次出现,都是这样的
array (size=1)
0 =>
array (size=3)
0 => string 'cabbba' (length=6)
1 => string 'abbba' (length=5)
2 => array (size=3)
0 => string 'b' (length 1)
1 => string 'b' (length 1)
2 => string 'b' (length 1)
这是一个简化的例子,在实际代码中,子模式' b'每次都会有所不同,但它遵循相同的模式。
答案 0 :(得分:3)
答案 1 :(得分:0)
您是否尝试为b*
使用非贪婪修饰符?
$string2 = 'cabbba';
preg_match_all('#c(a(b)*?a)#', $string2, $result3, PREG_SET_ORDER);
var_dump($result3);
对不起,如果不是你问的话,我不确定我是否真的了解你的需求......
<强>更新强>
对不起,以前的回答是错的,请忽略它...
我正在努力制定一个正确的... ...
试试像
preg_match_all('#c(a(?:(b{1}))*a)#', $string2, $result3, PREG_SET_ORDER);
但它不起作用,......: - (
更新2:
见Avinash Raj
回答,我认为这很好......