例えば
文字列からHTMLタグを除去したいような場合、
"<b>太文字</b>で書かれたタイトルです。<a href="...">リンク</a>はこちら"
ってのを、
"太文字で書かれたタイトルです。リンクはこちら"
で取得したいとします。
パッと思いついた正規表現
そのため、
</?.+>
こういう正規表現でマッチングさせて、空文字でリプレースすればいいかと思いましたが、この正規表現だとマッチング結果が、
<b>太文字</b>で書かれたタイトルです。<a href="...">リンク</a>
のように、最後に出てくる終了タグまでヒットしてしまいます。これは困ります。
最短でマッチングさせる
正規表現のマッチングは、基本的に最長一致という「いくつかのマッチングがあれば、マッチングの文字数が長い方でマッチングする」というルールがあります。
例の場合はその逆で、最短でマッチングさせたいのですが、その場合は、
</?(.*?)>
と指定します(Javaの場合)
あるいは、
</?[^>]*>
のように、>
を含まない文字列でマッチングさせると、必ず一番初めに修験する閉じ括弧でマッチングしますので、こちらでもいいです。