正则表达式未在Java中包含封闭的花括号

时间:2019-02-12 06:59:02

标签: regex regex-negation

请帮助我在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 :(得分:0)

因此,基本上,您希望同时匹配所有整个 {...}序列,或者换句话说,将它们视为正则表达式中的单个字符:{{1 }}使用此片段作为带有单个“常规非管道”字符的替换的首选,然后让整个过程重复进行,我们避免在花括号内进行虚假匹配:

\{.*?\}

或者正如Sven所指出的,您甚至不需要最后一个|或捕获组:

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

demo