簡體   English   中英

如何匹配任何符號,包括行終止符?

[英]How to match any symbol including a line terminator?

我有一個文本“文本abc”。 當我使用“(。+)abc”模式時,我找到了一個匹配的“文本”,沒關系。 但是,如果我使用第二個模式“([.. {1,})abc”,則匹配器找不到任何匹配項。 為什么?

我想使用大括號[],因為我還想使用換行符(例如,現在我無法將“ text \\ n abc”與第一個模式匹配)。

對不起,我的英語不好

另請參見DOTALL模式: https ://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html#DOTALL

我的代碼:

    String text = "text abc";
    Pattern pattern = Pattern.compile("(.+) abc");
    Matcher m = pattern.matcher(text);
    while (m.find()) {
        System.out.println(m.group(1));
    }

PS:我的目標是使用“([..n] {1,})abc”模式。

目前尚不清楚您要匹配的內容,但是如果我正確理解您的問題是“ text \\ n abc”。 那是因為換行來解決這個問題

Pattern pattern = Pattern.compile("(.+) abc", Pattern.DOTALL);

“。”的Pattern.DOTALL標志。 甚至匹配\\ r或\\ n。

現在,模式([.\\n]{1,}) abc相當倒退。 首先, {1,}+相同,因此此模式實際上是([.\\n]+) abc 其次,如Oracle regex教程所述:

注意:在某些情況下,上面列出的特殊字符將不被視為元字符。

在這種情況下[.] . 不再是正則表達式元字符。 您可以通過針對字符串"test . abc"測試模式來驗證這一點,該字符串將對"."分組"."

要啟用DOTALL標志,只需將參數添加到正則表達式中,或者您可以將選項添加為參數:

Pattern pattern = Pattern.compile("(?s)(.+) abc")

Pattern pattern = Pattern.compile("(.+) abc", Pattern.DOTALL)

注意事項

標志和其他有用信息的完整列表

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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