私はJavaコードの行を持っています
System.out.println("...Somtime".matches("^[^a-zA-Z]"));
false を返します。なんで?誰でも助けることができますか?
String#matches
両端で一致するため、パターンは文字列全体をカバーする必要があります。また(Caret - ^)
、最初にこれらのアンカーを指定する必要はありません。それは暗黙的です。
ここで、最初の 3 文字が - に一致[^a-zA-Z]
するため、後の文字は - に一致し[a-zA-Z]
ます。
だから、おそらくあなたが望む: -
"...Somtime".matches("[^a-zA-Z]{3}[a-zA-Z]+")
String.matches("regex")
このメソッドは、正規表現を文字列全体と照合します。文字列が正規表現に一致する場合は返され、そうでない場合は返さtrue
れfalse
ます
System.out.println("...Somtime".matches("^[^a-zA-Z]{3}[a-zA-Z]+"));
ここで {3} を使用している 3 つのドットと、このリターンtrue
System.out.println("Somtime".matches("^[^a-zA-Z]"));
戻るfalse