[英]Java String.matches giving wrong result
我正在使用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(.*)"));
}
}
上面的代碼打印錯誤。 我的正則表達式有什么問題嗎? 請指教。
如果需要,您需要啟用dotall模式.
也匹配新的行字符。 例如,這可以這樣做:
text.matches("(?s)(.*)full_date(.*)");
您可以在JavaDocs中閱讀更多內容。
問題是您的輸入包含換行符,因此您需要在正則表達式中傳遞右側標志,否則點元字符將不匹配:
text.matches("(?s)(.*)full_date(.*)")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.