2010-05-26 3 views
3

가 나는 HTML 문서에서 특정 문자열 일치를 잡기 위해이 정규식 패턴이하려고 해요 :Java에서이 정규식과 일치 시키려고 할 때이 예외가 throw되는 이유는 무엇입니까?

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

관련 문제