簡體   English   中英

如何將Android REGEX與模式和匹配器類一起使用?

[英]How to use Android REGEX with Pattern and Matcher Classes?

我有以下代碼:

String example = "<!--§FILES_SECTION§\n" +
                "Example line one\n" +
                "Example line two\n" +
                "§FILES_SECTION§-->";

        String myPattern = ".*?FILES_SECTION.*?\n(.*?)\n.*?FILES_SECTION.*?";
        Pattern p = Pattern.compile(myPattern);
        Matcher m = p.matcher(example);

        if ( m.matches() )
            Log.d("Matcher", "PATTERN MATCHES!");
        else
            Log.d("MATCHER", "PATTERN DOES NOT MATCH!");

為什么它總是返回“PATTERN DOES NOT MATCH?”

默認情況下。 與換行符不匹配。 您需要添加一個正則表達式選項,以便它執行以下操作:

Pattern p = Pattern.compile(myPattern,Pattern.DOTALL);

m.matches()只有在整個字符串匹配時才返回true。 請改用m.find(),它應該更好用!

首先,正如弧所說,。 除非你激活Pattern.DOTALL,否則你將使用m.find(),否則它將不匹配。

然后,如果由於任何原因,您無法使用Pattern.DOTALL,則可以使用此其他表達式。

FILES_SECTION(:|?\\ S)* FILES_SECTION

(注意我正在使用非捕獲組來處理FILES_SECTION分隔符之間的字符)。

暫無
暫無

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

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