java .matches()不匹配

时间:2012-08-02 12:52:56

标签: java regex

我有以下代码:

String myString;
boolean myResult;

myString = "First\nSecond\nThird\nFourth";
myResult = myString.matches("First.*");
myResult = myString.matches(".*First.*");
myResult = myString.matches(".*Second.*");
myResult = myString.matches("First\nSecond\nThird\nFourth");

最后一个返回true,其余都是false ...

我虽然以上所有表达式都会返回true。另外我需要找到以“First”开头的字符串,我认为第一个.matches()会覆盖它,但事实并非如此。应该怎么样?

4 个答案:

答案 0 :(得分:2)

。*可能不匹配\ n

用上一个匹配模式替换一个\ n。看看会发生什么。

答案 1 :(得分:2)

默认情况下,点不匹配行尾字符,但如果您在正则表达式字符串前加上(?s),那么匹配它们。这会启用DOTALL匹配标记。

答案 2 :(得分:1)

请参阅documentation

  

。任何字符(可能与行终止符匹配也可能不匹配)

答案 3 :(得分:1)

您可以尝试直接指定\ n \ r:

myResult = myString.matches("First(.|[\n\r])*")
相关问题