15

У меня есть проект Matlab, над которым я работаю в редакторе OSX TextMate. Мне нужно найти все экземпляры определенного слова, скажем, это "foo", которому также не предшествует «.» или после "/".

Тем не менее, я не могу найти способ поиска регулярных выражений, которые отрицательно определены, как это. Кто-нибудь знает, можно ли искать что-то вроде «A, которому предшествует что-либо, кроме B»?

(TextMate использует библиотеку регулярных выражений Oniguruma К. Косако.)

2 ответа2

22

Вы хотите использовать этот бит синтаксиса:

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

В вашем случае (?<!\.)foo(?!/)

6

Символ ^ (в форме круга или каретки) в квадратных скобках отрицает выражение. Таким образом, чтобы найти "foo" не предшествует «.» было бы:

[^.]foo

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .