내 자바 @windows입니다 : 문자열이 8 개 문자보다 작은 경우자바 부정적인 lookbehind 정규 표현식 버그?
java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11)
Java HotSpot(TM) Client VM (build 20.4-b02, mixed mode, sharing)
코드
Pattern.compile(".+(?<!(xxx|idea|perforator|pycharm|s).*)").matcher("xxx").matches() //returns TRUE while it should return FALSE
Pattern.compile(".+(?<!(xxx|idea|perforator|pycharm|s).*)").matcher("perforator").matches() //returns FALSE
부정적인 lookbehind처럼 보이는이 실패합니다.
버그입니까, 아니면 정규식에 대해 잘못 이해합니까?
당신이 뭘하고 싶어? lookbehind가 성공할 때까지 첫 번째'. +'가 되돌아 오므로 두 줄이 일치해야합니다. – Qtax
@Qtax Java matcher의 영원히 문제가되는'matches()'메소드는 표현식이 전체 입력 문자열을 일치로 캡처하는 경우에만 성공합니다. – Affe