我有以下代码:
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()会覆盖它,但事实并非如此。应该怎么样?
答案 0 :(得分:2)
。*可能不匹配\ n
用上一个匹配模式替换一个\ n。看看会发生什么。
答案 1 :(得分:2)
默认情况下,点不匹配行尾字符,但如果您在正则表达式字符串前加上(?s),那么将匹配它们。这会启用DOTALL匹配标记。
答案 2 :(得分:1)
请参阅documentation:
。任何字符(可能与行终止符匹配也可能不匹配)
答案 3 :(得分:1)
您可以尝试直接指定\ n \ r:
myResult = myString.matches("First(.|[\n\r])*")