Regexes에 NOT 연산자가 있습니까? 그 문자열에서와 같이 :"(2001) (asdf) (dasd1123_asd 21.01.2011 zqge)(dzqge) name (20019)"
\([0-9a-zA-z _\.\-:]*\)
연도가 아닌 모든 항목을 삭제하고 싶습니다 : (2001)
.
따라서 정규식이 반환해야하는 것은 다음과 같아야합니다 (2001) name
..
참고 : 같은 \((?![\d]){4}[0-9a-zA-z _\.\-:]*\)
것이 나를 위해 작동하지 않습니다 ( (20019)
어떻게 든 일치합니다 …).
답변
아니요, 직접 아님 연산자는 없습니다. 적어도 당신이 바라는 방식은 아닙니다.
그러나 너비가 0 인 부정 미리보기를 사용할 수 있습니다.
\((?!2001)[0-9a-zA-z _\.\-:]*\)
(?!...)
텍스트가있는 경우 일부 수단 “은 일치 다음 이 : (내다 따라서) 하지 않는다 (따라서 : 음성).이 일치를하지만 실제로는하지 않습니다 소비 가 일치하는 문자 (따라서 : 제로 폭).
실제로 2 개의 축 이있는 4 개의 둘러보기 조합이 있습니다.
- lookbehind는 내다 / : 지정 문자 경우 이전 또는 이후에 포인트가 고려된다
- positive / negative : 문자 가 일치해야하는지 또는 일치 하지 않아야 하는지 지정합니다 .
답변
일반적으로 양식 중 하나에 대해 몇 가지 해결 방법을 사용할 수 있지만 정답은 아닙니다.
[^abc]
,a
또는b
또는 또는c
,- 또는 부정적 미리보기 :
a(?!b)
,a
뒤에 나오지 않음b
- 또는 음 lookbehind :
(?<!a)b
이다b
덧붙일하지a