Как я могу упростить регулярное выражение `/\.\.\/ | \\ | (? | \ | / G`? - PullRequest
0 голосов
/ 04 мая 2020

Мне удалось построить это регулярное выражение:

/\.\.\/|\\|(?<!\.)\/|:|\*|\?|"|<|>|\|/g;

Это соответствует ../, /, \, но не ./. Может кто-нибудь помочь мне упростить это? PS Я знаю, что мой синтаксис многословен, но не знаю, как добиться того же эффекта с меньшим количеством символов.

1 Ответ

1 голос
/ 04 мая 2020

Единственное, что я вижу, что вы можете сократить, это сгруппировать односимвольные опции в класс символов; это не только экономит |, но и означает, что вам не нужно делать столько экранирования, сколько не имеет особого значения внутри класса символов. Таким образом, \\|:|\*|\?|"|<|>|\| становится [\\:*?"<>|]

Если ваш вариант регулярного выражения это позволяет, вы также можете использовать разделитель, отличный от / (# довольно часто встречается и не используется в вашем шаблоне), чтобы сохранить еще несколько побегов.

Это оставляет вас с #\.\./|(?<!\.)/|[\\:*?"<>|]#g

Не совсем красиво, но тогда регулярное выражение редко бывает:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...