在https://regex101.com/r/Q6lTN8/1
上测试了以下正则表达式Pattern pattern = Pattern.compile("(?<name>\\b\\w+\\b)\\s*=\\s*(?<value>\"[^\"]*\"|'[^']*'+)");
使用此输入文本
id='1019' name='Beer' color='#e7c705'
适用于Android版本&gt; 6.0,但在Android 5.1上产生以下崩溃
Process: pro.kleinod.socialapp, PID: 19517
java.util.regex.PatternSyntaxException: Syntax error in regexp pattern near index 4:
(?<name>\b\w+\b)\s*=\s*(?<value>"[^"]*"|'[^']*'+)
可能是什么问题?
答案 0 :(得分:1)
使用.*?
代替<name>
或<value>
来抓取群组,这样就可以避免PatternSyntaxException
:
String regex = "(.*?\\b\\w+\\b)\\s*=\\s*(.*?\"[^\"]*\"|'[^']*'+)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher("id='1019' name='Beer' color='#e7c705'");
while(matcher.find()) {
Log.e("TAG", matcher.group());
}
在Android 5.1上经过测试并正常运行。