我有一个字符串string
,其中包含换行符(\n
)。当我尝试将它与正则表达式pattern
匹配时,它返回false,尽管应该匹配。
package com.stackoverflow;
public class ExgExTest {
public static void main(String[] args) {
String pattern = ".*[0-9]{2}[A-Z]{2}.*";
String string = "123ABC\nDEF";
if (string.matches(pattern)) {
System.out.println("Matches.");
} else {
System.out.println("Does not match.");
}
} // END: main()
} // END: class
如何将多行字符串与正则表达式匹配?
答案 0 :(得分:3)
如何将多行字符串与正则表达式匹配?
您需要使用DOTALL
(s
)标记:
String pattern = "(?s).*[0-9]{2}[A-Z]{2}.*";
注意(?s)
,DOT
也会匹配新行。
答案 1 :(得分:0)
您应该使用Pattern.quote(pattern)
来转义模式中的所有特殊字符。