2011-12-07 2 views
1

일치하지 않는 문자열이있는 일부 Java 코드와 일치 시키려고합니다. 내가 가진,일치하지 않는 하위 문자열의 정규식

protected String methodName(String args[]) { 

    final String METHOD = "wrongMethodName"; 
    ... 

} 

을 내가하지 지금

protected String methodName(String args[]) { 

    final String METHOD = "methodName"; 
    ... 

} 

일치 싶어 다음 코드 블록 예를 들어, 내가 일치시킬 다음 코드 블록을 DOTALL를 필요로하는 다음 (작동하지 않는) 정규 표현식은 사용 가능 :

(\w+?)\(.*?\) ?{.*?METHOD *= *".*?"; 

내가 정규식 COMP하지 않는 캡처 그룹과 뒤에 부정적인 모습을 시도하는 경우 왜냐하면 뒤의 크기가 손에 잡히지 않았기 때문입니다.

java.util.regex.PatternSyntaxException: 
    Look-behind group does not have an obvious maximum length near index 39 

내가 캡처 그룹과 일치하지 않는 문자열을 일치 할 말을 나는이 정규식에 캡처 그룹을 사용할 수있는 방법이 있나요? 그렇지 않으면를

(\b\w+?\b)\(.*?\) ?{.*?METHOD *= *"(?!\1).*?" 

내가 첫 번째 그룹도 단어 경계를 사용 here on Regexr

를 참조하십시오

+0

왜 마지막 문자열과 일치하지 않는가? METHOD = \\ "\\ p {L} * \\"; "" 당신이 원하는 것을 더 구체적으로 표현할 수 있습니까? 잘못되고 올바른 메소드 이름 문자열이 무엇인지 알고 있습니까? –

답변

2

나는 (내가 제대로 문제를 이해 경우), 시도 대신에 부정적 예측을 사용할 수있을 것 같아요 두 번째 문자와 일치하기 시작합니다.

관련 문제