排除组正则表达式


Exclude a group regular expression

我在Stackoverflow的许多线程中搜索,但我没有找到任何与我的情况相关的内容。

原文如下:

<span class="red"><span>70</span><span style="display:none">1</span><span>,89</span> € TTC<br /></span>

我想用正则表达式提取70,89

所以我试了:

<span class="red"><span>([0-9]+)(<'/span><span style="display:none">1<'/span><span>)(,[0-9]+)<'/span>

返回一个包含3组的数组(PHP中包含preg_match_all):

1/70

2/

</span><span style="display:none">1</span><span>

3/89

我想排除组2并合并组1 &3 .

所以我也试了:

<span class="red"><span>([0-9]+)(?:<'/span><span style="display:none">1<'/span><span>)(,[0-9]+)<'/span>

但是它返回:

  1. 70
  2. 89

如何合并这两个组?

非常感谢你的回答,我将疯狂地搜索这个正则表达式!:)

祝您愉快!

只匹配用普通<span>:

$str = '<span class="red"><span>70</span><span style="display:none">1</span><span>,89</span> € TTC<br /></span>';
if (preg_match_all('#<span>([,'d]+)</span>#', $str, $matches)) {
    echo join('', $matches[1]);
}
// output: 70,89