2010-05-26 29 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

相關問題