2

疑問符のみを含む文字列に一致する正規表現を作成するにはどうすればよいですか?

「???」> true

「????」> true

"?"> true

「?a?」> false

"?a"> false

前もって感謝します !

編集:私が逃した2つのケース:

"?"> true

「????」> true

4

5 に答える 5

7

これは次のように簡単です。

^[?]+$

この式では、最初^から最後までの文字列が1 回以上繰り返される$疑問符(角括弧はメタ文字として解釈されないようにする) で構成されている必要があります。[?]+

于 2012-11-13T14:57:00.527 に答える
4

文字列にスペースを含めることができる場合 (編集に従って)、正しい正規表現は次のとおりです。

^[ ?]*[?][ ?]*$

これにより、任意の数のスペースと疑問符が許可され、少なくとも 1 つの疑問符が存在することが保証されます。

于 2012-11-13T18:42:28.023 に答える
2

疑問符をエスケープする方が良いかもしれません (私はいつもすべての記号をエスケープしています):

^\?+$

角かっこも必要ありません。

于 2012-11-13T14:59:26.933 に答える
1
/^(?=\s*\?)[?\s]+$/

説明:

^

文字列の先頭に一致

(?= ... )

先読み、文字列で何が起きているかについての幅ゼロのアサーションで、ここでは次のようにアサートします。

 \s*

任意の量の空白の後に:

\?

文字通りの疑問符。文字列に少なくとも 1 つの疑問符があることを確認します。

[?\s]

疑問符または空白に一致します。

+

1回以上。

$

文字列の末尾に一致します。

于 2012-11-13T18:38:12.840 に答える
0

正規表現を^\\?+$

    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
于 2012-11-13T16:54:02.913 に答える