LoginSignup
2
3

More than 5 years have passed since last update.

正規表現で最短マッチング

Last updated at Posted at 2016-10-06

例えば

文字列からHTMLタグを除去したいような場合、

"<b>太文字</b>で書かれたタイトルです。<a href="...">リンク</a>はこちら"

ってのを、

"太文字で書かれたタイトルです。リンクはこちら"

で取得したいとします。

パッと思いついた正規表現

そのため、

</?.+>

こういう正規表現でマッチングさせて、空文字でリプレースすればいいかと思いましたが、この正規表現だとマッチング結果が、

<b>太文字</b>で書かれたタイトルです。<a href="...">リンク</a>

のように、最後に出てくる終了タグまでヒットしてしまいます。これは困ります。

最短でマッチングさせる

正規表現のマッチングは、基本的に最長一致という「いくつかのマッチングがあれば、マッチングの文字数が長い方でマッチングする」というルールがあります。

例の場合はその逆で、最短でマッチングさせたいのですが、その場合は、

</?(.*?)>

と指定します(Javaの場合)

あるいは、

</?[^>]*>

のように、>を含まない文字列でマッチングさせると、必ず一番初めに修験する閉じ括弧でマッチングしますので、こちらでもいいです。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3