疑問符のみを含む文字列に一致する正規表現を作成するにはどうすればよいですか?
「???」> true
「????」> true
"?"> true
「?a?」> false
"?a"> false
前もって感謝します !
編集:私が逃した2つのケース:
"?"> true
「????」> true
これは次のように簡単です。
^[?]+$
この式では、最初^
から最後までの文字列が1 回以上繰り返される$
疑問符(角括弧はメタ文字として解釈されないようにする) で構成されている必要があります。[?]
+
文字列にスペースを含めることができる場合 (編集に従って)、正しい正規表現は次のとおりです。
^[ ?]*[?][ ?]*$
これにより、任意の数のスペースと疑問符が許可され、少なくとも 1 つの疑問符が存在することが保証されます。
疑問符をエスケープする方が良いかもしれません (私はいつもすべての記号をエスケープしています):
^\?+$
角かっこも必要ありません。
/^(?=\s*\?)[?\s]+$/
説明:
^
文字列の先頭に一致
(?= ... )
先読み、文字列で何が起きているかについての幅ゼロのアサーションで、ここでは次のようにアサートします。
\s*
任意の量の空白の後に:
\?
文字通りの疑問符。文字列に少なくとも 1 つの疑問符があることを確認します。
[?\s]
疑問符または空白に一致します。
+
1回以上。
$
文字列の末尾に一致します。
正規表現を^\\?+$
String regex = "^\\?+$";
Pattern pattern = Pattern.compile(regex);
System.out.println(pattern.matcher("?").find());//prints true
System.out.println(pattern.matcher("??").find());//prints true
System.out.println(pattern.matcher("????").find());//prints true
System.out.println(pattern.matcher("?a?").find());//prints false
System.out.println(pattern.matcher("?a").find());//prints false