Visual Studio:匹配正则数量不同的换行符

时间:2011-01-18 17:17:16

标签: regex visual-studio replace newline

给出以下HTML:

<tag1>
    <tag2 attr2="val2"/>
</tag1>
<tag1>
    <tag2
    attr2="val2"/>
</tag1>

我想在Visual Studio中使用一个正则表达式消除该HTML中的所有tag2。

匹配第一个: \<tag2.+\/\>

匹配第二个: \<tag2.*\n.*\/\>

所以假设我想合并这两个策略以匹配两者。以下都不匹配tag2标记:

\<tag2.*\/\>
\<tag2[.\n]*\/\>
\<tag2.*\n?.*\/\>
\<tag2[.\r\n]*\/\>

我得到: 第一个标签 没有比赛 没有比赛 不匹配

他们真的应该这样,但似乎可变数量的换行导致VS永远不会匹配。错误?

这使我在VS2005,VS2008和VS2010中感到困惑。

1 个答案:

答案 0 :(得分:4)

.应该在[]之外,否则它只匹配单个文字.字符。尝试:

\<tag2(.|[\r\n])*\/\>