簡體   English   中英

Java String.matches給出了錯誤的結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM