我正在使用String.matches来搜索输入字符串中存在的模式,但结果却是错误的。以下是我的代码。
public class Main {
public static void main(String[] args) {
String text =
"WHERE ( d.day_key = fact.day_key \n" +
"AND d.full_date BETWEEN '2013-10-01' AND '2013-12-05' \n" +
"AND advac.account_key = fact.advertiser_account_key \n" +
"AND cam.campaign_key = fact.campaign_key \n" +
"AND advac.account_name = 'abc.com') \n";
System.out.println(text.matches("(.*)full_date(.*)"));
}
}
以上代码打印为false。我的正则表达式有什么问题吗?请指教。
答案 0 :(得分:2)
答案 1 :(得分:1)
问题是您的输入包含换行符,因此您需要在正则表达式中传递右侧标志,否则点元字符将不匹配:
text.matches("(?s)(.*)full_date(.*)")