正则表达式不包括在 Java 中包含闭合大括号



请帮助我在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:

提前谢谢。

所以基本上,您希望同时匹配整个{...}序列,或者换句话说,将它们视为正则表达式中的单个字符: {.*?} 将此片段用作与单个"常规非管道"字符交替的第一选择,然后让整个事情重复, 我们避免在大括号内出现虚假匹配:

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

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

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

演示

相关内容

最新更新