加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-05-25 16:51:19 所属栏目:Java 来源:互联网
导读:此示例数据由Web Service返回 200,6, “California, USA” 我想用split(“,”)拆分它们,并尝试使用简单的代码查看结果. String loc = 200,6,California, USA; String[] s = loc.split(,);for(String f : s) System.out.println(f)

此示例数据由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基本上确保当前匹配’,’后面跟着偶数个”’字符(意思是它位于引号之外)

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

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

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

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读