1

私はそれについて多くのことをグーグルで調べましたが、解決策が見つかりません。学校のプロジェクトでは、サポートされていない文字列でサポートされていない文字列を見つける必要があります。許可されてい[A-Z\s]ます。

文字列全体がパターンに一致するPattern.match()かどうかのみをチェックすることがわかりました。だから私はこのパターンを試しました:.*[^A-Z\\s].*

文字列に改行文字が含まれていない限り機能します。それらも確認するために、私も[.\\s]*[^A-Z\\s][.\\s]*それらを処理していましたが、現在は何も機能しなくなりました。

この目的のための正しい正規表現は何でしょうか?

4

2 に答える 2

5

また:

  • マッチを反転させるだけで、
  • または、文字クラスを反転して、1 文字だけを見つけようとします。

[SO バグを回避 -- リスト項目の直後にコードを引用できない]

final Pattern p = Pattern.compile("[^A-Z\\s]");
if (p.matcher(input).find())
    // illegal input, bark

はい、.matches()名前が間違っています... Java での実際の正規表現の一致は、 を使用して行われ.find()ます。

于 2013-07-02T11:55:39.500 に答える
0

"(?s).*[^A-Z\\s].*" dotall モードをオンにしてみてください。dotall モードでは、式は行末記号.を含む任意の文字に一致します。デフォルトでは、この式は行末記号と一致しません。(?idmsuxU-idmsuxU) の Pattern.API を参照してください。

于 2013-07-02T12:05:11.163 に答える