请帮助我在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 指出的那样,你甚至不需要最后一个 | 或捕获组:
(?:{.*?}|[^|])+
演示