2010-05-26 37 views
3

我想一个特定的字符串匹配出的HTML文档,并有这样的正则表达式模式来抓住它:为什么在尝试与Java中的这个正则表达式匹配时抛出此异常?

Pattern somePattern = Pattern.compile("var json = ({\"r\":\"^d1\".*});"); 

然而,当我试着打在运行时的代码,我得到这个错误:

FATAL EXCEPTION: Timer-0 
java.util.regex.PatternSyntaxException: Syntax error U_REGEX_RULE_SYNTAX near index 13: 
var json = ({"r":"^d1".*}); 
      ^
    at com.ibm.icu4jni.regex.NativeRegEx.open(Native Method) 
    at java.util.regex.Pattern.compileImpl(Pattern.java:383) 
    at java.util.regex.Pattern.<init>(Pattern.java:341) 
    at java.util.regex.Pattern.compile(Pattern.java:317) 

有人可以告诉我我做错了什么吗?

回答

4

我认为你需要避开“{}”括号字符,因为这些字符对于正则表达式来说是特殊的。

这是表达“计数”,所以.{0,}相当于.* .{0,1}的长手方式等同于.?.{2,4}意味着至少两个,但不超过四个以前的比赛

+0

是的,他们是量词:http://java.sun.com/javase/6/docs/api/java/util/regex/Pattern.html – msw 2010-05-26 03:11:42

相关问题