Никогда, никогда, никогда не используйте регулярные выражения для задачи «сопоставляйте каждый X, который не соответствует Y». Вместо этого используйте тривиальное регулярное выражение для X и отрицайте результат.
(В выражениях оболочки, замените ==
с !=
или использовать grep -v
. В Perl, используйте !~
вместо =~
. В JQuery, используйте :not
оператора и т.п. Если ваш API не позволяет делать ничего другого, кроме задать один единственное регулярное выражение, бить поставщик по голове Хомского иерархии формальных языков)
Дополняемых регулярных выражения всегда либо неэффективны, нечитаемые или двигатель конкретного. - обычно все выше. Просто скажите «нет», чтобы злоупотреблять регулярными выражениями, использовать инструменты для решения задач, которые им подходят!
Обратите внимание, что 'для я в blah' не использует регулярные выражения, он использует расширение оболочки имени пути. –