2016-07-17 8 views
1

я не могу понять, регулярное выражение Отрицательных .. 'назадRegex Negative с spases касательно предшествующего тексту на C#

мне не нужно, чтобы поймать «(это)», если там было «не» слово некоторых пробелов до. Например:

  1. ... (это) - поймать
  2. ... нет (это) - не поймать
  3. ... not (this) - не поймать слишком, но это сделать

Пожалуйста, скажите мне, где я ошибаюсь, я не могу заставить его работать. Моего шаблона:

(?<!\bnot\b)\s*(\(.*?this.*?\)) 

И (?<!...) не может понять, что-то вроде (?<!\bnot\b\s*)

https://regex101.com/r/mK1yQ1/1

ответ

0

Ну, вы используете неправильный онлайн регулярки тестера, необходим один с поддержкой .NET синтаксиса регулярных выражений. Regex101.com не поддерживает синтаксис .NET regex.

Вы можете фактически использовать

(?<!\bnot\b\s*)\(this\) 

См this regex demo

Узор объяснение:

  • (?<!\bnot\b\s*) - проверить и не матч, если есть
    • \b - ведущая граница слово
    • not - not буквальная подстрока
    • \b - конечные границам слова
    • \s* - ноль или более пробельных
  • \( - буквальный ( символа
  • this - это литеральная строка this
  • \) - буква ) символ.

Обратите внимание, что этот шаблон не соответствует this в rtjtj bbg (this,and that). Чтобы сделать его совпадением с this, вы можете добавить ? (один или нуль) после последних \) ->(?<!\bnot\b\s*)\(this\)?. Вы можете дополнительно настроить шаблон.

+1

Невероятно, я был так близок .. Большое вам спасибо. –