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

.net 如何使用正则表达式查找跳过标记的匹配项?,.net,html,regex,.net,Html,Regex,我想写一个正则表达式,它应该忽略字符串之间的标记 e、 g。, 这是我的绳子 <p>hi this is a reg<del>U</del><ins>u</ins>lar expression match</p> 这是一个规则表达式匹配 我想要一个正则表达式从上面的字符串中找到“regular”, 匹配应找到包含标签的整个单词,即regular 这里的情况可以忽略 请帮帮我。。提前感谢我认为您无法在regex中获得健壮的

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

e、 g。, 这是我的绳子

<p>hi this is a reg<del>U</del><ins>u</ins>lar expression match</p>
这是一个规则表达式匹配

我想要一个正则表达式从上面的字符串中找到“regular”, 匹配应找到包含标签的整个单词,即
regular

这里的情况可以忽略


请帮帮我。。提前感谢

我认为您无法在regex中获得健壮的解决方案。无论如何,它的可读性不强。这里,以详细的形式,是一个符合修改后的规范的正则表达式。请注意,它无法处理包含任何嵌套标记的
标记—这在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
\b#单词的开头
r#匹配r
(?:#匹配其中一个
#  
[^]*#尖括号以外的任何字符
#  
|#或
#还有其他标签吗
)*#交替结束
e#匹配e
(?:[^]*|)等。。。
G
(?:[^]*|)*
U
(?:[^]*|)*
L
(?:[^]*|)*
A.
(?:[^]*|)*
R
\b

这里确实需要某种形式的HTML解析器。regexp不适合HTML,您将花费时间进行优化和调整,以尝试覆盖所有边缘情况(这是您无法做到的)。

Gah!如果你坚持使用正则表达式,你用什么语言?例如,使用jQuery,只获取文本是很简单的。忽略标记将意味着您的字符串变为
规则的
(因为这些标记有意义)。那么你到底想忽略什么呢@JamWaffles:这也需要在jQuery解决方案中加以考虑,使之成为非平凡的。@Tim说得很对,我在HTML中没有看到额外的
U
。@JamWaffles我在asp中使用的是c。net@TimPietzcker我想忽略标签中的内容,因此,我的匹配将只是“常规”而不是“常规”这在我处理大字符串时很好,如我给出的示例,bt对于所有一般情况,它都不会帮助知道..还有一件事,对我来说,字符之间只有标记,上面的正则表达式将匹配除标记之外的所有字符。…@harish:我已经更新了正则表达式。它适用于您的示例,并严格遵循您的新规范。谢谢。。工作正常,我会用不同的组合检查,如果有任何问题会告诉你。。你能检查一下这个问题吗