句読点があり[] punctuation = {'.', ',' , '!', '?'};
ます。そして、それらの句読点を組み合わせた単語に一致する正規表現を作成したいと思います。
たとえば、検索したい文字列:"....???"
、"!!!!!......"
、"??.....!"
など。
アドバイスをありがとう。
String.matches()
「句読点」の posix 正規表現で使用します。
str.matches("\\p{Punct}+");
Pattern
参考までに、 javadocによると\p{Punct}
、
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
また、 true を返すには入力全体に一致する必要があるため、式には^
andも必要ありません。そのため、start と end が暗示されます。$
matches()
次のように、句読点の Unicode カテゴリとwhile
入力に一致するループを試すことができます。
String test = "!...abcd??...!!efgh....!!??abc!";
Pattern pattern = Pattern.compile("\\p{Punct}{2,}");
Matcher matcher = pattern.matcher(test);
while (matcher.find()) {
System.out.println(matcher.group());
}
出力:
!...
??...!!
....!!??
注: これには、1 文字を超える任意の句読点シーケンスに一致するという利点があります(したがって、最後の "!" は設計上一致しません)。句読点シーケンスの最小長を決定するには、.Pattern