嗚呼、正規表現

正規表現が苦手だ。というか、苦手だといえるほど使ってもいないのだが、今後はなにか新しいことを覚えたらここにメモっていこうと思う。では、第一回。

例:以下の文字列から hogehoge のみを取り出すにはどう書いたらよいか? ただし hogehoge を直接指定する以外のやり方が望ましい。

<a href="https://google.com">hogehoge</a>

回答:<と>で囲まれている2箇所のみを削除できればよいので、この箇所を特定するような正規表現を考える。任意の文字の繰り返しは.+なので、

<.+>

がよさそうだが、これは最長マッチなので、この場合だと行頭の<と行末の>に囲まれた部分、すなわち文字列すべてにマッチしてしまう。2箇所それぞれを削除するには最短マッチにせねばならず、そのためには?を追記する必要がある。すなわち

<.+?>

これが正解。

不安なら正規表現チェッカーで確かめよう。