Отрицательная проверка регулярного выражения слова в группе

Мой шаблон здесь:

https://regex101.com/r/6z8X43/3

Моя проблема - вторая группа в матче 7:

([^\/\n]*)

этот.текст = текст;

Это означает любые символы, кроме / или "новой строки" до .text

Но мне нужно добавить «это» слово к этой отрицательной проверке, поэтому this.text должно быть недействительным. Что-то вроде ([^\/\n|this]*) - не /, не \n и не совсем "это".


person Sergey Senkov    schedule 29.01.2018    source источник
comment
Вероятно, вам не следует использовать регулярное выражение для анализа фактического кода (ваш компилятор, конечно, не... он использует формальный анализатор).   -  person Tim Biegeleisen    schedule 29.01.2018
comment
Используйте другое регулярное выражение и инвертируйте результат.   -  person iBug    schedule 29.01.2018
comment
Тим Бигелейзен, я работаю в Intellij Idea. Он может применять рефакторинг с использованием регулярного выражения. Теперь он отлично работает, кроме этого случая.   -  person Sergey Senkov    schedule 29.01.2018
comment
iBug, Можете ли вы показать какой-нибудь пример?   -  person Sergey Senkov    schedule 29.01.2018
comment
Попробуйте что-то вроде этого ((?!this)[^\/\n])* regex101.com/r/6z8X43/4   -  person Srdjan M.    schedule 29.01.2018
comment
Для записи [^\/\n|this] означает соответствие одному символу, который не является / или \n или | или t или h или i или s. Как правило, не используйте квадратные скобки, пока не поймете, что они делают.   -  person tripleee    schedule 29.01.2018
comment
Tripleee, Это был пример того, как это может быть. Конечно, я проверил это и получил ваши результаты =)   -  person Sergey Senkov    schedule 29.01.2018


Ответы (1)


Вы могли бы использовать

^([ \f\t]*)((?:(?!this)[^\/\n])*)\.text\s*=[ \f\t]*([^$;\n=]+)
#                ^^^^^

См. измененную демонстрацию.

person Jan    schedule 29.01.2018