正则表达式Java非法/不受支持的转义序列
我正在搜索一个“color=number,number,number”并使用正则表达式获取“number,number,number”部分,但是当我放置正则表达式模式时 我得到: 正则表达式“\b颜色=\b\K\w\d\d*,\d*”格式不正确:转义序列非法/不受支持* 代码如下:正则表达式Java非法/不受支持的转义序列,java,android,regex,Java,Android,Regex,我正在搜索一个“color=number,number,number”并使用正则表达式获取“number,number,number”部分,但是当我放置正则表达式模式时 我得到: 正则表达式“\b颜色=\b\K\w\d\d*,\d*”格式不正确:转义序列非法/不受支持* 代码如下: Pattern p = Pattern.compile("\\bcolor=\\b\\K\\w\\d*,\\d*,\\d*"); Matcher m = p.matcher(url); if(
Pattern p = Pattern.compile("\\bcolor=\\b\\K\\w\\d*,\\d*,\\d*");
Matcher m = p.matcher(url);
if(m.find()){
return m.group(0);
}
else {
return "0,0,0";
}
我还尝试:
"\\bcolor=\\b\\\\K\\w\\d*,\\d*,\\d*"
以及:
上面的代码已编译,但未得到所需的结果
我怎样才能解决这个问题?谢谢 Android中的正则表达式引擎不支持。您可以在要提取的正则表达式部分周围安全地使用捕获组,然后使用。组(1)
:
注意:您不需要第二个\b
单词边界,因为它隐含在=
(非单词字符)和\w
(匹配单词字符)之间
详细信息
-\bcolor=
作为一个整体color=
-捕获组#1:一个字字符,0+位,出现2次(\w\d*,\d*,\d*)
,后跟,
和0+位。您甚至可以将其写成,
(\\w\\d*(?:,\\d*){2})
\K
?
"\\\\bcolor=\\\\b\\\\K\\\\w\\\\d*,\\\\d*,\\\\d*"
Pattern p = Pattern.compile("\\bcolor=(\\w\\d*,\\d*,\\d*)");
Matcher m = p.matcher(url);
if(m.find()){
return m.group(1);
}
else {
return "0,0,0";
}