gpt4 book ai didi

Java - 解释这个正则表达式 (",(?=([^\"]*\"[^\"]*\")*[^\"]*$)", -1)

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:09:00 26 4
gpt4 key购买 nike

我用逗号分隔字符串 "foo,bar,c;qual="baz,blurb",d;junk="quux,syzygy""但想在引号中保留逗号。此问题已在 Java: splitting a comma-separated string but ignoring commas in quotes 中得到解答问题,但它未能完全解释发布者如何创建这段代码:

line.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)", -1);

好吧,我确实理解了一些正在发生的事情,但有一点让我感到困惑。我知道第一个逗号用于匹配。

然后

        (?= 

是向前搜索。

然后对第一部分进行分组

  ([^\"]*\"[^\"]*\"). 

这是我感到困惑的地方。所以第一部分

  [^\"]* 

表示任何行的开头都用引号将标记分隔零次或多次。

然后是\"。现在这就像在字符串中打开一个引号还是说匹配这个引号?

然后它重复完全相同的代码行,为什么?

      ([^\"]*\"[^\"]*\")

在第二部分中再次添加相同的代码以说明它必须以引号结尾。

有人可以解释我没有得到的部分吗?

最佳答案

[^\"] 是没有 ".\“火柴 ”。所以基本上 ([^\"]*\"[^\"]*\") 匹配包含 2 个 " 并且最后一个字符是 " 的字符串。

关于Java - 解释这个正则表达式 (",(?=([^\"]*\"[^\"]*\")*[^\"]*$)", -1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31491139/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com