2011-02-10 2 views
0

タグを含む指定された開始タグと終了タグの間のすべてのテキストを抽出します。 例:次の正規表現とは何ですか?

Input : I am <NAME>Kai</NAME> 
Text Extracted: <NAME>Kai</NAME> 

タグに基づいてテキストを抽出します。

上記の正規表現とは何ですか?問題のタグはネストすることができない場合

+2

[RegExはXHTML自己完結型タグを除くオープンタグと重複する可能性あり](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) –

答えて

3

(と仮定ケース非感受性):

Regex regexObj = new Regex("<NAME>(?:(?!</NAME>).)*</NAME>", RegexOptions.Singleline | RegexOptions.IgnoreCase); 

が、これはあなたのニーズに合わせて微働くかもしれない間に合わせと-ソリューションであることをお勧めかもしれませんが、さあなたの顔にも吹き飛ばす(例えば、コメント内にタグがある場合、タグの中に空白がある場合、タグ内に属性がある場合など)。これらのいずれかが問題になる場合は、正規表現が遵守する必要がある正確な仕様で質問を編集してください。ここ

1

は、任意のタグ名を受け付ける正規表現である:<(\w+)>.*?</\1>

\1バック参照グループ(\w+)と終了タグは、開始タグと同じ名前を持たなければならないことを保証します。

あなたは特別なタグNAMEを検索したい場合は、あなたは、この正規表現を使用することができますが:<NAME>.*?</NAME>

+0

複数のタグが同じ行にある場合は、これが一致します。 –

+0

ありがとうございます。今では '?'を非貪欲なものにするために '?'を追加しました。 – splash

関連する問題