Java:正则表达式转义正则表达式

前端之家收集整理的这篇文章主要介绍了Java:正则表达式转义正则表达式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
此示例数据由Web Service返回

200,6,“California,USA”

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

String loc = "200,\"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#代码

解决方法

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

这是你想要的正则表达式
(要将它放在split函数中,你需要转义字符串中的引号)

说明

你需要找到所有’,’不在引号中..
那就是你需要预测(http://www.regular-expressions.info/lookaround.html)以查看当前匹配的逗号是在引号内还是在引号内.

要做到这一点,我们使用lookahead基本上确保当前匹配’,’后面跟着偶数个”’字符(意思是它位于引号之外)

所以
(?:[^“] |”[^“] *”)* $表示仅在非引号字符结束时匹配或者在它们之间有任何引号的引号

(?=(?:[^“] |”[^“] *”)* $)将预见上述比赛

,(?=(?:[^“] |”[^“] *”)* $)最后这将匹配所有’,’与上述前瞻

猜你在找的Java相关文章