REGEX无法正常运行,preg_match

时间:2014-05-14 02:03:00

标签: php regex html-parsing preg-match

这个REGEX没有像我希望的那样工作......

/<ol class=\"references\">\/(.*?)<\/ol>/s

我在PHP中将它与preg_match结合使用。

preg_match_all("/<ol class=\"references\">\/(.*?)<\/ol>/s", $file, $mats);

当我将其放入http://regex101.com/时,似乎问题是它希望匹配/解析的字符串为<ol class="references">/text here</ol>

它声明:\/ matches the character / literally

但是,我希望REGEX和PHP的代码片段能够解析<ol class="references">text here</ol>

1 个答案:

答案 0 :(得分:1)

这是正确的\/匹配文字斜杠,因此您的模式无法匹配:

<ol class="references">text here</ol>

因为表达式在第一个/之后需要一个文字>。只需删除它,它应该按要求工作:

<ol class=\"references\">(.*?)<\/ol>

如果元素的内部文本中偶尔出现斜杠(/),您不想捕捉,则可以进行量化匹配 - ? - 如下所示:

<ol class=\"references\">\/?(.*?)<\/ol>