繁体   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