공백으로 구분 된 숫자 목록에서 단일 '1'을 찾습니다.왜이 부정적인 lookbehind 고정 길이 정규식이 작동하지 않습니까?
public class RegexTester {
public static void main(String[] args) {
String test1 = "1 2";
String test2 = "2 1 2";
String test3 = "2 11 2";
String regex = "(?<!\\d)1(?!\\d)";
System.out.println("Matches 1: " + test1.matches(regex));
System.out.println("Matches 2: " + test2.matches(regex));
System.out.println("Matches 3: " + test3.matches(regex));
}
}
출력은 다음과 같습니다 :
Matches 1: false
Matches 2: false
Matches 3: false
그러나 (IMO)해야한다 : 여기에 몇 가지 예제 코드입니다
Matches 1: true
Matches 2: true
Matches 3: false
Lookbehind이 고정 길이는, 그래서 나는 이유에 혼란 스러워요 이 정규식은 일치하지 않습니다. 이유를 알았다면이 케이스에 대한 대안적인 정규 표현식을 제공 할 수 있습니다.
감사합니다.
당신이 방법을 의미합니까? 어쩌면 나는 분명하지 않다. '1'이 공백으로 둘러싸 일 때나 아무것도하지 않아도 될 때마다 일치해야한다. 대체 정규 표현식에 대한 아이디어를 제공하지만, 왜 이것이 작동하지 않는지에 대해서는 대답하지 않는다. –