【Java】文字列の完全一致と部分一致を判定する方法

当ページのリンクには広告が含まれています。

こんにちは! ログログです。

34歳で開発未経験から開発エンジニアになり、今ではフリーランスエンジニアとして働いています!

Stringのmatches、containsメソッドなどを使った完全一致、部分一致を解説します!

目次

完全一致

matches

完全一致は文字列が同じであることを判定するだけですので、matchesを使うなら正規表現は使わずに判定します。

正直、完全一致であればequalsでよい気はしますが。

部分一致(前方一致)

matches

前方一致には、「^(ハットマーク)」を使います。
※帽子のような形をしているため、ハット(hat)と呼んでいます。

「^」は文字列の最初であることを示す記号です。
「^123.*」のように、最初がどんな文字列と一致しているべきかを指定します。

前方一致部分が固定値の場合、startWithメソッドを使用することができます。
その場合、正規表現での一致判定はできないのでご注意ください。

<補足>
「.(ドット)」
 何らかの1文字です。
 どんな文字でもかまいませんが、1文字が必ずあることを示します。

「*(アスタリスク)」
 直前の文字の0回以上の繰り返しです。
 つまり、「.*」は「.」が0回以上繰り返されるということです。
 0回もあり得るため、繰り返さないパターンも含みます。
 (例)
  正規表現:^123.*
  Trueになるパターン:123、1234、123AAAA

startsWith

前方一致にはstatsWithメソッドも使えます。

前方一致してほしい文字列を指定すればよいだけですが、正規表現は使えないのでその場合はmatchesを検討して下さい。

部分一致(後方一致)

matches

後方一致には、「$(ドル)」を使います。
「$」は文字列の最後であることを示す記号です。
「.*890$」のように、最後がどんな文字列と一致しているべきかを指定します。

後方一致部分が固定値の場合、endWithメソッドを使用することができます。
その場合、正規表現での一致判定はできないのでご注意ください。

endsWith

後方一致にはendsWithメソッドが使えます。

startsWith同様に正規表現は使えないのでmatchesを検討して下さい。

部分一致(部分一致)

matches

部分一致には、「^」と「$」を使います。
「.*456.*$」のように、最初から最後までの間に指定した文字列が含まれるように指定します。

contains

containsメソッドを使う場合、指定した文字列が含まれていればTrueを返します。

まとめ

・完全一致は、文字列が全く同じであること。(matchesとequalsが使える)
・部分一致には、前方/後方/部分一致がある。
・前方一致には、matchesメソッドで^を使うかstartsWithを使う。
・後方一致には、matachesメソッドで$を使うかendsWithを使う。
・部分一致には、matachesメソッドで^と$を使った正規表現か、containsメソッドで判定できる。
・matachesメソッドでは .と*で、任意の文字を指定して、柔軟な判定ができる。

参考(Java Docs)

[Java Docs] String matches(String regex)

最後までお読み頂き、ありがとうございました!
ご意見・ご要望がありましたら、遠慮なくコメント下さい!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

リーマンショックの影響で26歳の時にIT業界から離れ、紆余曲折を経て34歳でエンジニアに復帰しました。
復帰前は開発未経験でしたが、独学した知識と面接時のコミュニケーション力で見事開発エンジニアとして復帰しました!
今はフリーランスエンジニアとして仕事をしています。

■保有資格
・Java Gold SE 11

コメント

コメントする

CAPTCHA


目次