Сложное регулярное выражение... И ИЛИ, отрицание
Я хотел бы искать файлы по их содержимому в 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 для содержимого файла