Добавление дополнительных групп захвата в регулярное выражение для «читаемости» - PullRequest
0 голосов
/ 09 ноября 2019

Мне трудно понять, где чередования начинаются / заканчиваются (особенно на очень длинных регулярных выражениях), и, как правило, я добавляю в скобки только для своего собственного понимания. Например:

\w+\.(?!bat|exe)\w+   # this is a simple regex that's clear anyways, but using it to show the point

И я часто буду писать это как:

\w+\.(?!(bat|exe))\w+

Кроме того, я считаю, что это легче читать, чем использование группы без захвата, что, вероятно, больше "«Правильно», чем группировка захвата, которую я имею выше:

\w+\.(?!(?:bat|exe))\w+

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


Возможно, лучшим примером будет регулярное выражение типа:

\w+\.psd|psd_exe

Для меня это было бы «похоже» на совпадение со строкой, такой как file.psd или file.psd_exe, вместо того, чтобы на самом деле совпадать с file.psd или psd_exe. Поэтому я предпочел бы написать это как:

(\w+\.psd)|psd_exe

Чтобы сделать его более понятным, если не в подробном режиме.

1 Ответ

0 голосов
/ 09 ноября 2019

Почти всегда повышение читабельности - это хорошо. Я не вижу никаких негативных моментов в вашем подходе, кроме наличия дополнительных групп захвата - если это можно считать «плохим».

Изменение производительности, вероятно, будет незначительным.

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