Regex для не включения содержимого закрытых фигурных скобок в Java - PullRequest
0 голосов
/ 12 февраля 2019

Пожалуйста, помогите мне решить эту проблему в Java.

input string = <V2>UTM_Source:google|UTM_Medium:cpc|UTM_Campaign:{Core|IN|Desktop|BMM|Top Cities|TS}|
UTM_Content:{Compare Car Insurance}|UTM_Term:

Я хочу разделить с помощью "|"но не изнутри содержат фигурные скобки. Таким образом, результат будет:

<V2>UTM_Source:google
UTM_Medium:cpc
UTM_Campaign:{Core|IN|Desktop|BMM|Top Cities|TS}
UTM_Content:{Compare Car Insurance}
UTM_Term:

Заранее спасибо.

1 Ответ

0 голосов
/ 12 февраля 2019

Таким образом, в общем, вы хотите сопоставить целые {...} последовательности одновременно или, другими словами, рассматривать их как один символ в вашем регулярном выражении: \{.*?\} Использование этого фрагментав качестве первого выбора при чередовании с одним символом «обычный не труба» и последующем повторении всего этого, мы избегаем ложных совпадений внутри фигурных скобок:

((?:\{.*?\}|[^|])+)\|

иликак указывает Свен, тебе даже не нужен этот последний |или группа захвата:

(?:\{.*?\}|[^|])+

демо

...