如何找到使用正则表达式跳过标记的匹配项?

时间:2012-08-21 08:45:36

标签: .net html regex

我想写一个正则表达式,它应该忽略字符串之间存在的标记。

如, 这是我的字符串

<p>hi this is a reg<del>U</del><ins>u</ins>lar expression match</p>

我希望正则表达式从上面的字符串中找到“常规”, 匹配应找到包含标签的整个单词,即reg<del>U</del><ins>u</ins>lar

这里的情况可以忽略。

请帮助我...提前谢谢

2 个答案:

答案 0 :(得分:2)

我认为你无法在正则表达式中获得强大的解决方案。无论如何,它不会非常易读。在这里,以详细的形式,是一个符合您修订的规范的正则表达式。请注意,它无法处理包含任何嵌套标记的<del>标记 - 使用nsregularexpressions无法做到这一点。

\b        # Start of word
r         # Match r
(?:       # Match either
 <del>    #  <del>
 [^<>]*   #  any characters besides angle brackets
 </del>   #  </del>
|         # or
 <[^<>]*> #  any other tag
)*        # End of alternation
e         # Match e
(?:<del>[^<>]*</del>|<[^<>]*>)*  # etc...
g
(?:<del>[^<>]*</del>|<[^<>]*>)*
u
(?:<del>[^<>]*</del>|<[^<>]*>)*
l
(?:<del>[^<>]*</del>|<[^<>]*>)*
a
(?:<del>[^<>]*</del>|<[^<>]*>)*
r
\b

答案 1 :(得分:0)

这里你真的需要某种形式的HTML解析器。正则表达式不适合HTML,您可以花时间进行优化和调整,以尝试覆盖所有边缘情况(您无法做到)。