正则表达式针对HTML中的特定单词

问题描述:

我是RegEx的新手,一直无法弄清楚可能是一个简单问题。我需要匹配HTML块中特定单词的列表。正则表达式针对HTML中的特定单词

例如,我有一个单词列表:

  • ASDF
  • ZXCV
  • QWER

而下面的HTML:

<p>ASDF jumped over the ZXCV of QWER.</p>

我我正在使用与RegEx数组匹配的preg_replace_callback(),例如/\bASDF\b/,但那只会找到ASDF,它们被空格包围,并且不会考虑符号,例如标记或标点的开始/结束。

我一直盯着RegEx床单几个小时,而我一直在这一个。任何建议,你可以给我开始将不胜感激。感谢您的时间。

\bASDF\b 

将匹配

<p>ASDF</p> 
<p>foo ASDF bar</p> 
<p>&nbsp;ASDF&gt;</p> 
<p>foo ASDF.</p> 

你有什么麻烦不匹配?

+0

啊哈!谢谢你的帮助塞思。我一直在抨击这个问题,事实证明问题不在于RegEx部分!我将结束这个问题,因为我真正的问题完全没有解决,但非常感谢你的帮助! – Brad 2011-05-27 01:22:26

+0

计划,但除非我再等几分钟,否则不会让我。 – Brad 2011-05-27 01:31:13

您想将HTML标签排除在等式之外,只能与文本节点一起使用。

因此,剥离HTML或使用类似DOMDocument的内容来解析元素,然后在文本节点上使用正则表达式。

另外,\b应该考虑>的边界,因为它不是一个单词字符。

+0

这不适合我的情况,因为我需要将结果返回到HTML。否则,我会按照你的建议去做。我正在动态地添加一些特定单词的链接。 – Brad 2011-05-27 01:30:19

+0

@Brad DOM解析器可以重新创建您的HTML罚款:) – alex 2011-05-27 01:31:58

+0

虽然通常我同意你(并且绝不会尝试用RegEx解析HTML),但我认为这对于这个应用程序来说有点矫枉过正。但是,我会把这个想法留在我的后兜里。谢谢。 – Brad 2011-05-27 01:37:15

你想匹配任何这些单词或全部吗?如果有的话,你可以做(​​ASDF | ZXCV | QWER)。如果是这些话,匹配所有单词的标准是什么?

查看此资源http://www.regular-expressions.info我强烈建议您拿起本书的副本,Mastering Regular Expressions,Jeffrey Friedl,http://regex.info

+0

这非常有帮助,谢谢! – Brad 2011-05-27 01:30:38