Просто напоминание о том, что нужно быть осторожным, если будет какое-либо вложение. Regex просто не очень хорош в этом. Рассмотрим следующий фрагмент:
(а,) б, (с, (д,) е)
Исходя из вашего вопроса, вы можете использовать только запятую b
. Хитрость в том, что выражения, как правило, либо полностью жадные, либо совершенно не жадные, с небольшим промежуточным положением.
Жадное выражение будет видеть (
в самом начале сегмента и )
в самом конце и принимать все внутри них, независимо от того, где в другом месте есть закрывающие скобки. Ничего не будет совпадать.
Нечестивое выражение будет принимать только наименьший возможный набор, начиная с начала. Он будет соответствовать запятой b
, но также будет рассматривать этот сегмент как одну единицу: (c,(d,)
. Затем он будет также соответствовать запятой e
, поскольку он уже занял последний (
.
Существуют некоторые механизмы, которые позволяют вам обрабатывать уровни вложенности, но выражения, как правило, уродливы и сложны в обслуживании: лучше всего просто избегать этой функции, если вы ее не понимаете.