使用正则表达式在短语中查找多个协理
在这个短语中匹配多个维度,结果很简单:此处为工作样品
<?php
preg_match_all("/('d+'.'d)(x|cm)/", "120.0x140.0x215.0cm", $out);
print_r($out);
?>
[0]=> array
[0]=>120.0x
[1]=>140.0x
[2]=>215.0cm
[1]=> array
[0]=>120.0
[1]=>140.0
[2]=>215.0
[2]=> array
[0]=>x
[1]=>x
[2]=>cm
我将使用的是$out[1]
阵列
当我试图将这个模式与上下文隔离时,问题就来了,它只匹配最后一个值:这里的工作示例
<?php
preg_match_all("/<div>Dimensions: (('d+'.'d)(x|cm))+<'/div>/", "<div>Dimensions: 120.0x140.0x215.0cm</div>", $out);
print_r($out);
?>
[0]=> array
[0]=><div>Dimensions: 120.0x140.0x215.0cm</div>
[1]=> array
[0]=>215.0cm
[2]=> array
[0]=>215.0
[3]=> array
[0]=>cm
Im检查$out[2]
以包含多个值,与第一个示例中的$out[1]
相同
我这里少了什么?有可能用正则表达式做这件事吗?我敢打赌这可能。
这是因为当只找到一个匹配时,但一个捕获组被多次找到时,您只会得到最后一个。
一个可能的解决方案是从<div>
元素中提取is,然后使用您拥有的第一个Regex。