0

私はJavaコードの行を持っています

System.out.println("...Somtime".matches("^[^a-zA-Z]"));

false を返します。なんで?誰でも助けることができますか?

4

2 に答える 2

5

String#matches両端で一致するため、パターンは文字列全体をカバーする必要があります。また(Caret - ^)、最初にこれらのアンカーを指定する必要はありません。それは暗黙的です。

ここで、最初の 3 文字が - に一致[^a-zA-Z]するため、後の文字は - に一致し[a-zA-Z]ます。

だから、おそらくあなたが望む: -

"...Somtime".matches("[^a-zA-Z]{3}[a-zA-Z]+")
于 2012-12-25T05:34:36.617 に答える
3
String.matches("regex") 

このメソッドは、正規表現を文字列全体と照合します。文字列が正規表現に一致する場合は返され、そうでない場合は返さtruefalseます

System.out.println("...Somtime".matches("^[^a-zA-Z]{3}[a-zA-Z]+"));

ここで {3} を使用している 3 つのドットと、このリターンtrue

System.out.println("Somtime".matches("^[^a-zA-Z]"));

戻るfalse

于 2012-12-25T05:46:59.387 に答える