TextMate에서 정규 표현식에 NOT을 사용할 수 있습니까?


22

OSX 편집기 TextMate에서 작업중 인 Matlab 프로젝트가 있습니다. 특정 단어의 모든 인스턴스를 찾아야합니다. "foo"라고 말하면 ""가 앞에 오지 않습니다. 또는 "/"로 성공했습니다.

그러나 이와 같이 부정적으로 정의 된 정규 표현식을 검색하는 방법을 찾을 수 없습니다. "A와 B가 아닌 다른 것"을 검색 할 수 있는지 아는 사람이 있습니까?

TextMate는 K. Kosako의 Oniguruma 정규식 라이브러리 를 사용합니다 .

답변:


31

다음과 같은 구문을 사용하려고합니다.

(?=subexp)         look-ahead
(?!subexp)         negative look-ahead
(?<=subexp)        look-behind
(?<!subexp)        negative look-behind

귀하의 경우 (?<!\.)foo(?!/)


1
대박! 나는 문서에서 그것들을 간과했다. 감사합니다 :)
Nagel

이것은 foo텍스트의 시작이나 끝에서 단어의 발생을 고려하는 훌륭한 솔루션입니다 .
simhumileco

13

대괄호 안의 ^ (circumflex 또는 caret)는 표현식을 무효화합니다. 따라서 "."가없는 "foo"를 찾으려면 될 것입니다 :

[^.]foo

(^|[^.])(foo)그것은 또한 하나의 추가 캐릭터와 일치 해야합니다 .
ctrl-alt-delor

고마워, 브라이언! 이것은 처음에 시도한 변형이지만 구문을 엉망으로 만들고 [^ \.] 대신 ^ [\.]을 (를) 시도했습니다. : P
Nagel

1
작동하지 않습니다. '.'을 제외한 모든 문자를 원합니다. 이는 '모든 캐릭터'를 의미합니다. 당신은 그것을 탈출해야합니다 : (^ | [^ \.]) (foo)
Andras Gyomrey

[stuf]는 s, t, u, f와 일치합니다. 대괄호의 내용은 표현이 아니며 목록입니다. [^.]은 마침표입니다. [^ \.]는 백 슬래시 나 점이 아닌 것입니다. ^와 - 때때로 []에서 특별한 의미가있는 유일한 문자입니다
셔우드 Botsford
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.