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