2016-08-25 11 views
-1

Я пытаюсь узнать, как построить refular выражение, которое соответствует всем путям под /fs, за исключением /fs/a.txt и /fs/b.txt. Это регулярное выражение должно начинаться с ^ и заканчиваться $. Я посмотрел на другие выражения для сопоставления шаблонов, которые исключают определенную строку, но они не ограничены регулярными выражениями начала и конца. Как мне создать регулярное выражение?Регулярные выражения, которые исключают совпадение

+0

«refular выражение» ? Добавьте тег для языка или инструмента, который вы используете. –

+0

Попробуйте '/^\/fs \/(?! a \ .txt $) (?! b \ .txt $). * $ /'. У вас есть какие-то собственные попытки? – Xufox

+0

Или '/^\/fs \/(?! (?: a | b) \. Txt). * $ /' – LukStorms

ответ

1

Вы можете использовать технику сброса, используя глаголы типа SKIP и FAIL (поддерживается только в PCRE).

Вы можете иметь регулярное выражение так:

/fs/[ab]\.txt(*SKIP)(*FAIL)|/fs/.* 

Working demo

Если у вас нет PCRE двигатель, то вы можете поместить шаблоны, которые вы хотите сбросить в начале и установить захватывая группы для шаблона вы хотите, как это:

/fs/[ab]\.txt|(/fs/.*) 

Working demo

Пробу диаграмма, показывающая идею будет

Regular expression visualization

Конечно, вам придется захватить содержимое из группы capturin с индексом группы 1

Смежные вопросы