2

我正在尝试匹配一个字符串,使用java的matches方法从一个点开始。为什么这不起作用:

".why?".matches("\\.*");

当我使用单斜杠时,我收到无效转义序列的错误。提前致谢

4

2 回答 2

7

"\\.*"匹配由零个或多个'.'s 组成的字符串。它匹配以下(引用的)字符串:

""
"."
".."
"..."

(等等)

你想要:"\\..*"相反。请注意,.默认情况下不匹配换行符,因此它不会匹配以下字符串:

".Why? \n Not!"

要匹配这样的字符串,您需要启用 DOT-ALL:"(?s)\\..*"

于 2012-04-18T19:25:24.567 回答
1

自己试了一下。这对我有用

System.out.println(".why?".matches("^\\..*"));

你哪里少了一个“。” 匹配“为什么?” 部分。

于 2012-04-18T19:58:18.343 回答