Как разбить строку на ",", если "," находится в квадратных скобках с использованием Regex?

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

[Header 1], [Head,er 2], Header 3

чтобы я мог разбить это на куски вроде:

[Header 1]
[Head,er 2]
Header 3

Я дошел до этого:

(?<=,|^).*?(?=,|$)

Что мне даст:

[Header 1]
[Head
,er 2]
Header 3

Ответ 1

В этом случае легче разделить на разделители (запятые), чем на соответствие токенам (или кускам). Идентификация запятых, которые являются разделителями, занимает относительно простое представление:

,(?=[^\]]*(?:\[|$))

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

Ответ 2

\[.*?\]

Забудьте о запятых, вас это не волнует.:)

Ответ 4

 (?<=,|^)\s*\[[^]]*\]\s*(?=,|$)

используйте разделители [ и ] в ваших интересах

Ответ 5

Разве это не так просто?

(?<=,|^)(?:[^,]|\[[^[]*\])*

Ответ 6

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

\[[^\]*]\]

Или вы используете это регулярное выражение для разделения списка скобок (с помощью утверждений обхода):

(?<=]|^)\s*,\s*(?=\[|$)