1

私は以下のコードの平和を持っています:

     Pattern p = Pattern.compile("^\\d|^\\W|^\\s");
     Matcher m = p.matcher("stack overflow");

誰かが上記の正規表現パターンを説明できますか? それは何をしますか?既存の機能との間にスペースを許可しないようにする必要があります。たとえば、スペースが含まれているため、「スタックオーバーフロー」を許可しないでください。

編集

私が試した以下のパターンは私にとってはうまくいっています。あなたの提案に感謝します:

[a-zA-Z0-9_$#]
4

2 に答える 2

8

正規表現は、単一の数字、または単語ではない任意の単一の文字、または空白文字である任意の単一の文字のいずれかに一致します。

これらの 3 つの選択肢のいずれも^、それぞれの選択肢に含まれているため、件名の先頭から開始する必要があります。

あなたの説明に基づいて、次のような表現が必要だと思います:

^[\w#$]+$

これは、1 つ以上の文字[A-Za-z0-9_]、ハッシュ#、およびドルを含むものと一致し$ます。Word の文字にはスペースが含まれないため、これでうまくいくはずです。

アンカーを追加^$、文字列全体にのみ一致するようにします (これはあなたが望むものですか?) 例のように最初に一致させたい場合は、$.

あなたの例のように、次の\ように Java コードをエスケープする必要があることに注意してください。

Pattern p = Pattern.compile("^[\\w#$]+$");
于 2012-04-13T10:05:16.653 に答える
4

他の回答に追加するには: のようなパターンを探していると思います。つまり、先頭 ( ) から末尾 ( ) までの"^\\S*$"任意の数の非スペース文字 ( ) に一致します。\\S*^$

于 2012-04-13T10:08:35.030 に答える