2013-07-02 2 views
2

Java에서 lookbehinds는 * 및 + 반복을 사용할 수 없음을 알고 있습니다. 그러나 나는 여전히 다음과 같은 예외가 발생, 패턴의 반복의 최대 길이를 정의하기 위해 괄호를 사용했습니다 :최대 길이를 가지고 있음에도 불구하고 lookbehind에 대한 최대 길이가 없는데 패턴 구문 예외가 발생했습니다.

Exception in thread "main" java.util.regex.PatternSyntaxException: 
Look-behind group does not have an obvious maximum length near index 33 
    (?<!([A-Z]{0,100}\W{0,100}){0,100})[A-Z]{2,}(?!([A-Z]+\W+)+) 
+0

메시지에 명시된 것처럼 충분히 명확하지 않습니다. –

답변

0

당신은 아직도 당신의 lookbehind에서 가변 길이 일치를 사용하고, 그래서이 유효하지 않습니다. 작성한대로 [A-Z]{0,100}은 0에서 100 자 사이에서 일치하며, 일치하는 문자의 상한선을 사용하여 [A-Z]*과 실질적으로 동일합니다.

+0

그러나 오류는 '(100 + 100) * 100'보다 길어서 최대 길이를 알아야한다는 것을 알고있는'룩어 드 그룹은 명백한 최대 길이가 없습니다 '라고 말합니다. – Pshemo

+0

@willOEM 나는 이걸 Pshemo와 함께있다. 정규식 엔진은 패턴의 내 정의에서 최대 길이를 계산할 수 있어야합니다. 그래서 나는 당황합니다. 나는 "[java with] with http://www.regular-expressions.info/lookaround.html에서 물음표와 중괄호를 최대 매개 변수와 함께 사용할 수있다"를 읽었습니다. –

+1

'*'와'+'는 여전히 존재합니다 중괄호와 같은 방식으로 구현됩니다. 여기에 대한 답변을보십시오 : http://stackoverflow.com/questions/1536915/regex-look-behind-without-obvious-maximum-length-in-java – woemler

관련 문제