Java 正则表达式,如果为';它在一个特定的图案中

Java 正则表达式,如果为';它在一个特定的图案中,java,regex,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 如果我只是根据;然后它将拆分列表中不应该出现的项。然后我尝试编写一些复杂的正则表达式,但没

我有一个自定义字符串,它是多个项目的流式版本。项目可以是整数、字符串和每个项目所在的字符串列表 分别由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
如果我只是根据;然后它将拆分列表中不应该出现的项。然后我尝试编写一些复杂的正则表达式,但没有任何效果


有人能给点提示吗?

你应该使用惰性量词:

(.+?);(.+?);(.*)
链接:


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

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

详细信息:

  • :匹配文字
  • (?![^{}]*}
    :负前瞻,以确保在非
    {
    }
    字符之后没有
    }

为什么最后一个
I:23
不应该是一个单独的项目?@anubhava纠正了这个问题。感谢您指出这是在@anubhavaThanks man的评论之前。这真的奏效了。我一定会考虑买你的书;