Мне трудно понять, где чередования начинаются / заканчиваются (особенно на очень длинных регулярных выражениях), и, как правило, я добавляю в скобки только для своего собственного понимания. Например:
\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
Чтобы сделать его более понятным, если не в подробном режиме.