需要根据 :(冒号) 拆分字符串,而不是用双引号引起来的冒号

need to split sting based on :(colon) but not the colon which is enclosed in double Quotes

需要根据:(冒号)拆分字符串,而不是双引号中的冒号,例如abc":"ghi:123":"456,拆分结果应该是这样的,第一部分abc":"ghi,第二部分应该是 123":"456。 Java.

其实很简单。您可以通过谷歌搜索或查看 here.

了解有关正则表达式(我在这里使用的工具)的更多信息

你要的图案是这样的:

(?<="):(?!")|(?<!"):(?=")|(?<!"):(?!")

这是由三个几乎相同的部分组成的;每件作品的描述都可以在上面的 link 中找到。然而,简而言之,他们会寻找恰好一侧有单个 " 的任何冒号,或者周围根本没有 " 的冒号。

你这样使用它:

string.split("(?<=\"):(?!\")|(?<!\"):(?=\")|(?<!\"):(?!\")");

注意 " 已经变成 \" 来逃避它。如果您不输入反斜杠,则会出现错误。

Online test here.

您可以使用正则表达式来精确匹配 ":" 而不是 :

使用您的字符串示例 abc":"ghi:123":"456 正则表达式 [a-z0-9]{3}":"[a-z0-9]{3} 将匹配 abc":"ghi123":"456