Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正则表达式Java非法/不受支持的转义序列_Java_Android_Regex - Fatal编程技术网

正则表达式Java非法/不受支持的转义序列

正则表达式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(

我正在搜索一个“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(m.find()){
        return m.group(0);
    }
    else {
        return "0,0,0";
    }
我还尝试:

    "\\bcolor=\\b\\\\K\\w\\d*,\\d*,\\d*"
以及:

上面的代码已编译,但未得到所需的结果

我怎样才能解决这个问题?谢谢

Android中的正则表达式引擎不支持。您可以在要提取的正则表达式部分周围安全地使用捕获组,然后使用
。组(1)

注意:您不需要第二个
\b
单词边界,因为它隐含在
=
(非单词字符)和
\w
(匹配单词字符)之间

详细信息

  • \bcolor=
    -
    color=
    作为一个整体
  • (\w\d*,\d*,\d*)
    -捕获组#1:一个字字符,0+位,出现2次
    ,后跟
    和0+位。您甚至可以将其写成
    (\\w\\d*(?:,\\d*){2})

Java甚至支持
\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";
}