- ベストアンサー
タグを削除する正規表現について
<("[^"]*"|'[^']*'|[^'">])*> とうい正規表現があります。HTMLのタグを削除するタグとういことですが、意味がわかりません。 "<"、">"の括弧の意味はわかります。"( )"はグループ化という意味もわかります。"|"はorという意味もわかりますし、*は一つ前の文字列が0以上というのも理解しています。[]は中の文字列のいずれかに該当するという意味もわかります。ただ、 "[^"]*" '[^']*' [^'">] の個々の意味を考えるとわかりません。 "[^"]*"は最初にダブルクオテーションが出てきて、^ or "が0個以上該当するという意味にとらえてしまいます。なにとぞご解説お願いいたします。 ちなみにhttp://www.mnet.ne.jp/~nakama/を参考にしています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
まず、[]の意味を説明しておきましょう。[]はキャラクタクラスを示し、[]で囲まれた文字のいずれかにマッチします。[abc]だと、a,b,cのいずれにもマッチします。 [^]はネガティブキャラクタクラスで、囲まれた文字列以外のものにマッチします。[^abc」だと、a,b,cにはマッチせず、それ以外の文字列にマッチします。 ということで、不明と言われている正規表現を分解してみましょう。 1)"[^"]*" --> " [^"] * " と解釈されます ダブルクオートで始まり、ダブルクオート以外の文字が0回以上繰り返し、ダブルクオートで終わる文字列にマッチします。つまり、ダブルクオートで囲まれた文字列全てにマッチすることになります。 2)'[^']*' --> ' [^'] * ' と解釈されます 上記ダブルクオートの時と同じです。シングルクオートで始まり、シングルクオート以外の文字が0回以上繰り返し、シングルクオートで終わる文字列にマッチします。 3)[^'">] これは単純に、ネガティブキャラクタクラスそのものです。シングルクオート・ダブルクオート・不等号以外のものにマッチします。 ということは、不等号(小なり)で始まり、1)or2)or3)の0回以上の繰り返しが続き、不等号(大なり)で終わる文字列にマッチすることになります。
その他の回答 (1)
- yyr446
- ベストアンサー率65% (870/1330)
[^"]の意味は、^ or "でなくて、"じゃない文字の意味です。 []の中では^は否定の意味になります。 <hoge id="hogege" xx ='fuga' > をマッチさせたいのだと思います