给出以下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中感到困惑。
答案 0 :(得分:4)
.
应该在[]
之外,否则它只匹配单个文字.
字符。尝试:
\<tag2(.|[\r\n])*\/\>