我正在搜索" color = number,number,number"得到"号码,号码,号码"部分使用正则表达式,但当我把正则表达式模式,
我得到: 正则表达式' \ bcolor = \ b \ K \ w \ d ,\ d *,\ d *"'格式错误:非法/不支持的转义序列*
以下是代码:
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*"
和
"\\\\bcolor=\\\\b\\\\K\\\\w\\\\d*,\\\\d*,\\\\d*"
以上编译但未获得所需结果。
我该如何解决这个问题?谢谢!
答案 0 :(得分:2)
Android中的正则表达式引擎不支持\K
match reset operator。您可以安全地使用要提取的正则表达式部分周围的捕获组,然后使用.group(1)
抓取它:
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";
}
请注意,您不需要第二个\b
字边界,因为它隐含在=
(非字母字符)和\w
之间(与字符字符匹配)。
<强>详情
\bcolor=
- color=
作为一个完整的词(\w\d*,\d*,\d*)
- 捕获组#1:单词char,0+位数,2次出现,
后跟,
和0+位数。您甚至可以将其写为(\\w\\d*(?:,\\d*){2})
。