cha*_*ghe 4 java regex android
我正在使用java.util.regex.Pattern类来匹配Android程序中的字符串。
if(Pattern.matches("\\{\\{.*?}}", element.getValue())) {
...
} else {
...
}
Run Code Online (Sandbox Code Playgroud)
我得到了以下错误。
Caused by: java.util.regex.PatternSyntaxException: Syntax error in regexp pattern near index 8
\{\{.*?}}
Run Code Online (Sandbox Code Playgroud)
我正在使用Android Studio和Open JDK。为了测试正则表达式,我在Netbeans中编写了一个简单程序,它工作正常。Netbeans也使用openjdk。
System.out.println(Pattern.matches("\\{\\{.*?}}", "{{hello:sdf}}"));
Run Code Online (Sandbox Code Playgroud)
为什么正则表达式在android项目中给出错误?
使用
"\\{\\{.*?\\}\\}"
Run Code Online (Sandbox Code Playgroud)
问题是,在Android中使用的正则表达式引擎是ICU的发动机是从Java一个不同的,并且都 {与}代表字面打开/关闭大括号必须ICU正则表达式模式进行转义。
在绝大多数}情况下,不必逃避正则表达式的味道,但ICU regex引擎并非如此,它不能}基于模式上下文来推断含义。例如PCRE,.NET,Python,Java正则表达式会}以[a-z]}模式查找,并且像{以前一样,它们“知道”它不是限制量词构造的一部分。ICU不是那么聪明。它仍然认为必须在{其后跟一个数字},如果未转义,则报告错误。
| 归档时间: |
|
| 查看次数: |
706 次 |
| 最近记录: |