正则表达式在特定模式内时不拆分

时间:2018-11-28 16:58:41

标签: java regex

我有一个自定义字符串,它是多个项目的流版本。项目可以是整数,字符串和字符串列表,其中每个项目 分别由 I,S,L 表示。

For eg: String d = "I:123;S:345;L:{S:45;S:67;S:789};I:23";

我正在尝试编写单个正则表达式,该正则表达式可以拆分此字符串并应产生4个项目

1. I:123,  2. S:345, 3.L:{s:45;s:67;s:789}; ,4:I:23

如果我只是基于进行拆分,那么它将拆分项目也不应该发生的列表。然后,我尝试编写一些复杂的正则表达式,但没有任何效果。

有人可以给我一些指点吗?

2 个答案:

答案 0 :(得分:1)

您应该使用惰性的量词:

(.+?);(.+?);(.*)

链接:

答案 1 :(得分:1)

您可以使用基于前瞻的正则表达式进行拆分:

String[] arr = str.split(";(?![^{}]*})");

RegEx Demo

详细信息:

  • ;:匹配文字;
  • (?![^{}]*}):负向查找,以确保在非}{字符之后没有}