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

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

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

matchesの場合は正規表現が使えますが、containsなどの判定メソッドで使えないのでご注意ください。

目次

よく使う正規表現

machesメソッドでは正規表現が使えます。その時よく使う正規表現は以下かなと思います。

正規表現読み方意味
^ハット行頭
$ドル行末
.ドット任意の1文字
どんな文字でもかまいませんが、1文字が必ずあることを示します
*アスタリスク直前のパターンの0回以上繰り返し
例えば、「.*」は「.」が0回以上繰り返されるということです。
0回もあり得るため、繰り返さないパターンも含みます。
(例)
 正規表現:^123.*
 Trueになるパターン:123、1234、123AAAA
+プラス直前のパターンの1回以上繰り返し

部分一致(あいまい検索)

matches


例えば「.*456.*」のように、任意の指定した文字列が含まれるようにします。

contains

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

前方一致

matches

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

「^」は文字列の最初であることを示す記号です。
「^123.*」のように、先頭に一致してほしい文字列を指定します。

startsWith

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

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

後方一致

matches

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

endsWith

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

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

完全一致

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

そうするとただの文字列の一致判定なので、equalsで問題ありません。

matches or equals

まとめ

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

参考(Java Docs)

[Java Docs] String matches(String regex)

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

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

この記事を書いた人

リーマンショックの影響で26歳の時にIT業界から離れ、紆余曲折を経て34歳でエンジニアに復帰。
現在はフリーランスエンジニア兼コアファクトリ合同会社代表。
得意な言語はJava。

新人教育経験あり(わからなくて進まない子を放置しない方針)
Javaの新人教育にお困りでしたらお声がけください。

■保有資格
・Java Gold SE 11

コメント

コメントする

CAPTCHA


目次