投稿 2022年7月31日
更新 2022年7月31日
専門用語の数:少
URLがhttpsかhttpかを判定したかった時に、
以下のような処理で判定しました。
この実行結果は、「http」と出力されます。
正規表現は間違えているのか?とか、
何が間違えているのかを必死に探してて、ドはまりしてました。
Stringクラスにある「matches」メソッドは、
完全一致の正規表現でしか、ヒットしないということでした。
その行すべてが正規表現で一致しないと、trueにならないということです。
「.*」や「.+」等を使用するイメージです。
以下のように正規表現を書けば、ヒットします。
この実行結果は、「https」と出力されます。
上記で紹介したメソッド以外にも、正規表現検索できます。
「Matcher」の「find」メソッドなら、部分検索を実現できます。
この実行結果は、「https」と出力されます。
最初、ハマったときと同じ正規表現で、ちゃんとヒットします。
「String」クラスの「matches」メソッド、
内部的には「Matcher」クラスの「matches」メソッドを使っています。
まとめると、「Matcher」クラスのメソッドは、
完全一致の「find」メソッド
部分一致の「matches」メソッド
となっております。
Javaの正規表現検索でハマった対処法でした。
知らずに使っていると、ハマるのでご注意ください。
Stringのmatchesは便利に使える反面、
罠があるのだなと、学びました。
以上、ここまで見ていただきありがとうございます。
皆さまの快適な開発ライフに、ほんの少しでもお役に立てれば幸いです。
コメント一覧