2011-01-18 18 views
2

の様々な数を越えた次のHTMLを考える:私は、Visual Studio内の1つの正規表現とそのHTML内のすべてのTAG2の者を一掃したいのVisual Studio:マッチ正規表現改行

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

を。

は、最初にマッチするには、次の \<tag2.+\/\>

は、第二に一致させるには: \<tag2.*\n.*\/\>

だから私は両方に一致するように、これらの2つの戦略をマージするとします。以下の試合のなしの両方TAG2タグ:私が得る

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

: 最初のタグ 一致 ない試合 一致するものが

彼らは本当にするべき、それは改行の数が可変かのように思えますVSは決して一致しません。バグ?

これはVS2005、VS2008、VS2010で悩まされています。

答えて

4

.[]の範囲外である必要があります。それ以外の場合は、1つのリテラル.文字と一致します。試してみてください:

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

グレートリード - 実際にはあまりにも一致します。 \>で終わる複数のタグを持つHTMLでは、一度に1つではなく、すべてを一度に一致させます。しかし、それはこれにつながります。これはうまくいきます!ありがとう! \ ] | \ n)* \/\> –

関連する問題