Javaのmatchesメソッドを使用して、ドットで始まる文字列を一致させようとしています。これが機能しない理由:
".why?".matches("\\.*");
単一のスラッシュを使用すると、無効なエスケープ シーケンスのエラーが発生します。前もって感謝します
"\\.*"
0 個以上'.'
の s で構成される文字列に一致します。次の (引用された) 文字列に一致します。
""
"."
".."
"..."
(等々)
あなたが望む:"\\..*"
代わりに。.
デフォルトでは改行に一致しないため、次の文字列には一致しないことに注意してください。
".Why? \n Not!"
このような文字列を一致させるには、DOT-ALL を有効にする必要があります。"(?s)\\..*"
自分で試してみました。これは私のために働く
System.out.println(".why?".matches("^\\..*"));
「。」が1つ足りないだけです。「なぜ?」に合わせて。部。