Stringオブジェクトのmatches、containsメソッドを使った説明です。
戻り値:boolean
■追記(2022/5/4)
・前方一致にstartWithメソッドの用例
・後方一致にendWithメソッドの用例
完全一致
説明
完全一致は文字列が同じであることを判定するだけです。
そのため、正規表現は使わずに判定します。
コード
1 2 3 4 5 6 7 8 9 10 |
// 完全一致 String str1 = "1234567890"; // True System.out.println(str1.matches("1234567890")); // 文字列が完全に一致する // False System.out.println(str1.matches("123456789")); // 文字列が完全に一致しない |
部分一致(前方一致)
説明
前方一致には、「^(ハットマーク)」を使います。
※帽子のような形をしているため、ハット(hat)と呼んでいます。
「^」は文字列の最初であることを示す記号です。
「^123.*」のように、最初がどんな文字列と一致しているべきかを指定します。
前方一致部分が固定値の場合、startWithメソッドを使用することができます。
その場合、正規表現での一致判定はできないのでご注意ください。
コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
// 部分一致(前方一致) String str2 = "1234567890"; // True System.out.println(str2.matches("^123.*")); // 3文字の前方一致 System.out.println(str2.matches("^1234567890.*")); // 10文字 + 任意の0文字以上の前方一致 System.out.println(str2.matches("^123456789.")); // 9文字 + 任意の1文字の前方一致 System.out.println(str2.startsWith("123")); // startWithメソッドによる前方一致 // False System.out.println(str2.matches("^124.*")); // 3文字の前方不一致 System.out.println(str2.matches("^1234567890.")); // 10文字 + 任意の1文字の前方不一致 System.out.println(str2.startsWith("234")); // startWithメソッドによる前方不一致 System.out.println(str2.startsWith("123.*")); // startWithメソッドで正規表現は使用不可 |
<補足>
「.(ドット)」
何らかの1文字です。
どんな文字でもかまいませんが、1文字が必ずあることを示します。
「*(アスタリスク)」
直前の文字の0回以上の繰り返しです。
つまり、「.*」は「.」が0回以上繰り返されるということです。
0回もあり得るため、繰り返さないパターンも含みます。
(例)
正規表現:^123.*
Trueになるパターン:123、1234、123AAAA
部分一致(後方一致)
説明
後方一致には、「$(ドル)」を使います。
「$」は文字列の最後であることを示す記号です。
「.*890$」のように、最後がどんな文字列と一致しているべきかを指定します。
後方一致部分が固定値の場合、endWithメソッドを使用することができます。
その場合、正規表現での一致判定はできないのでご注意ください。
コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
// 部分一致(後方一致) String str3 = "1234567890"; // True System.out.println(str3.matches(".*890$")); // 任意の0文字以上 + 3文字の後方一致 System.out.println(str3.matches(".*1234567890$")); // 任意の0文字以上 + 10文字の後方一致 System.out.println(str3.matches(".234567890$")); // 任意の1文字 + 9文字の後方一致 System.out.println(str3.endsWith("890")); // endsWithメソッドによる後方一致 // False System.out.println(str3.matches(".*190$")); // 任意の0文字以上 + 3文字の後方不一致 System.out.println(str3.matches(".1234567890$")); // 任意の1文字 + 10文字の後方不一致 System.out.println(str3.endsWith("789")); // endsWithメソッドによる後方不一致 System.out.println(str3.endsWith(".*890")); // endsWithメソッドで正規表現は使用不可 |
部分一致(部分一致)
説明
部分一致には、「^」と「$」を使います。
「.*456.*$」のように、最初から最後までの間に指定した文字列が含まれるように指定します。
正規表現以外に、containsメソッドを使う方法もあります。
(例)
str4.contains(“444”);
文字列に、”444″が含まれていればTrueを返します。
コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// 部分一致(部分一致) String str4 = "1234567890"; // True System.out.println(str4.matches(".*456.*$")); // 3文字の部分一致 System.out.println(str4.matches("^.*1234567890.*$")); // 任意の0文字以上 + 10文字 + 任意の0文字以上の部分一致 System.out.println(str4.matches("^.23456789.$")); // 任意の1文字 + 8文字 + 任意の1文字の部分一致 // True (contains) System.out.println(str4.contains("456")); // 任意の3文字 // False System.out.println(str4.matches(".*444.*$")); // 3文字の部分一致 System.out.println(str4.matches("^.1234567890.$")); // 任意の1文字 + 10文字 + 任意の1文字の部分一致 // False (contains) System.out.println(str4.contains("444")); // 任意の3文字 |
まとめ
・完全一致は、文字列が全く同じであること。
・部分一致には、前方/後方/部分一致がある。
・前方一致には、^を使う。
・後方一致には、$を使う。
・部分一致には、^と$を使った正規表現か、containsメソッドで判定できる。
・.と*で、任意の文字を指定して、柔軟な判定ができる。
最後に
独学が難しいと感じていたり、エラーの解消に時間がかかるようだったらオンラインのサポートサービスを検討してみて下さい。
回答率100%の掲示板に質問し放題のオンラインサービス
参考(Java Docs)
[Java Docs] String matches(String regex)