Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.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 Android中匹配右大括号时出现正则表达式模式错误_Java_Android_Regex - Fatal编程技术网

Java Android中匹配右大括号时出现正则表达式模式错误

Java Android中匹配右大括号时出现正则表达式模式错误,java,android,regex,Java,Android,Regex,我使用java.util.regex.Pattern类来匹配Android程序中的字符串 if(Pattern.matches("\\{\\{.*?}}", element.getValue())) { ... } else { ... } 我得到了以下错误 Caused by: java.util.regex.PatternSyntaxException: Syntax error in regexp pattern near index 8

我使用java.util.regex.Pattern类来匹配Android程序中的字符串

if(Pattern.matches("\\{\\{.*?}}", element.getValue())) {
   ...             
} else {
   ...
}
我得到了以下错误

 Caused by: java.util.regex.PatternSyntaxException: Syntax error in regexp pattern near index 8
                                                                  \{\{.*?}}
我正在使用Android studio和开放JDK。为了测试regex表达式,我用Netbeans编写了一个简单的程序,效果很好。Netbeans也使用openjdk

System.out.println(Pattern.matches("\\{\\{.*?}}", "{{hello:sdf}}"));
为什么正则表达式在android项目中出现错误

使用

"\\{\\{.*?\\}\\}"
问题在于Android中使用的正则表达式引擎是一个不同于Java的正则表达式引擎,并且在ICU正则表达式模式中必须转义表示文本开/闭大括号的
{
}


在绝大多数正则表达式中,
}
不必转义,但ICU正则表达式引擎的情况并非如此,它无法根据模式上下文推断
}
含义。例如,PCRE、.NET、Python、Java正则表达式在
[a-z]}
模式中查找
}
,并且由于之前没有
{
,他们“知道”它不是ICU的一部分。ICU没有那么聪明。它仍然认为必须有一个
{/code>在
>之前跟数字
并在未越界时报告错误。

我认为您只需要使用
如果(element.getValue().matches(“\\{\\{.*}”)
,如果仍然存在问题,请尝试转义
}
s。我注意到在api 21之前的版本中
java.util.regex
matcher无法正常工作。最好使用
com.google.code.regexp