为什么以下模式不适用于所有 OS 版本?

Why does the following Pattern not work for all OS versions?

https://regex101.com/r/Q6lTN8/1

上测试了以下正则表达式
Pattern pattern = Pattern.compile("(?<name>\b\w+\b)\s*=\s*(?<value>\"[^\"]*\"|'[^']*'+)");

使用此输入文本

id='1019' name='Beer' color='#e7c705'

在 Android 版本 > 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>"[^"]*"|'[^']*'+)

可能是什么问题?

使用 .*? 而不是 <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.

上测试并运行良好