Сложное регулярное выражение... И ИЛИ, отрицание

Я хотел бы искать файлы по их содержимому в Total Commander, поэтому я хочу создать регулярное выражение, но я не могу найти какое-либо руководство, где бы оно действительно объяснялось. Моя ситуация такова, что мне нужно что-то вроде этого:

fileContains("<html>") && fileContains("{myVariable1}") && fileNotContains("<script>")

Я могу написать это примерно так:

(<html>)+
({myVariable1})+
(<script>){0} ... but this does not work for me

И я не могу собрать все это вместе. Есть идеи, пожалуйста? Или у вас есть ссылка на превосходное объяснение регулярных выражений?

1 ответ

Попробуйте это регулярное выражение:

(?=.*\{myVariable1\})(?=.*<html>)(?!.*<script>)

это всего лишь три вида подряд. один из них - негативная перспектива. Обратите внимание на модификатор "одна строка", чтобы включить "точка соответствует новой строке".

редактировать (за комментарий): Я думаю, что движок регулярных выражений Total Commander вообще не поддерживает обходные пути. Хотя вы могли бы объединить два положительных взгляда в эквивалентный шаблон "потребления" с чем-то вроде этого непроверенного регулярного выражения: (.*(\{myVariable1\}|<html>)){2}вы не можете включить "поиск с отрицанием" в одно регулярное выражение, если у вас нет легитимного механизма регулярных выражений.

Вы можете попробовать этот плагин для регулярных выражений Total Commander:

Плагин содержимого RegEx с поддержкой Unicode - на основе библиотеки Perl-совместимых регулярных выражений (PCRE). Этот плагин может заменить механизм RegEx TC для содержимого файла

Другие вопросы по тегам