gpt4 book ai didi

Java : Regular Expression escape Regular Expression

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:28:11 27 4
gpt4 key购买 nike

此示例数据由 Web 服务返回

200,6, "California, USA"

我想使用 split(",") 拆分它们并尝试使用简单的代码查看结果。

String loc = "200,6,\"California, USA\"";       
String[] s = loc.split(",");

for(String f : s)
System.out.println(f);

不幸的是这是结果

200
6
"California
USA"

预期的结果应该是

200
6
"California, USA"

我尝试了不同的正则表达式,但没有成功。是否可以在 "" 中转义给定的正则表达式?

更新 1:添加了 C# 代码

更新 2:删除了 C# 代码

最佳答案

,(?=(?:[^"]|"[^"]*")*$)

这是你想要的正则表达式(要将其放入拆分函数中,您需要转义字符串中的引号)

解释

您需要找到所有不在引号中的 ','..也就是说,您需要先行 ( http://www.regular-expressions.info/lookaround.html) 来查看当前匹配的逗号是在引号内还是在引号外。

为此,我们使用前瞻来基本上确保当前匹配的 ',' 后跟偶数个 '"' 字符(意味着它位于引号之外)

所以(?:[^"]|"[^"]*")*$ 表示只有在末尾有非引号字符或一对引号之间有任何内容时才匹配

(?=(?:[^"]|"[^"]*")*$) 将向前看上面的匹配

,(?=(?:[^"]|"[^"]*")*$) 最后这将匹配所有 ',' 与上面的前瞻

关于Java : Regular Expression escape Regular Expression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14680054/

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