#初めに
<何か>
のような始点Aから終点Bまでの文字列を正規表現で指定する方法について述べただけの記事です
#本題
始点(今回は「<」)から終点(今回は「>」)までの文字列を単純に正規表現で表すと
正規表現[不正解]
String regExp = "<.*>";
こんな形になると思いますがこれだとうまく動きません。
なぜかというと、.*で指定した文字数は貪欲でマッチしうる文字列(最長文字列)にマッチするためです。
そのため、出現するデリミタが一つだけならばいいですが、2つ以上出た場合に途中の文字列全てにマッチしてしまいます。
そのため、最短でマッチするように指定するためには「+」や「*」の後に「?」をつけてあげると最短の文字列にマッチします。
正規表現[正解]
String regExp = "<.*?>";
#最後に
今回はJavaの記述で行いましたが、基本的に正規表現は共通で扱われるので他の言語でも動くはずです。
最短マッチはあまり参考資料がないので(僕がみた中では)ハマると結構時間が取られてしまうかなと思い筆を取りました。
かくいう私も数時間ほど悩んでしまいました、、、
参考になれば幸いです