【发布时间】:2017-04-07 20:20:57
【问题描述】:
我有一个像hello, "darkness, my", (old, friend) 这样的字符串,我想要这个拆分结果:hello"darkness, my"(old, friend)
我找到了一种忽略 "-marks (,?=([^\"]*\"[^\"]*\")*[^\"]*$) 中的逗号的方法和另一种忽略括号中的逗号 (,(?=[^\\)]*(?:\\(|$))) 的方法。
当我使用第一个时,我得到:hello"darkness, my"(oldfriend)
当我使用第二个时,我得到:hello"darknessmy"(old, friend)
但是我该如何结合这两种解决方案呢?
【问题讨论】:
-
The best regex trick ever 的变体 - 向下滚动到
Java部分。 -
您始终可以同时使用这两种测试...
,(?=...)(?=...)。或者为了让您的生活更简单,不要使用描述分隔符的拆分,使用Matcher#find并描述您对any words或"text between quotes"或(text between parenthesis)感兴趣的标记。或者甚至更好的是根本不使用正则表达式。只需遍历字符并注意括号外的逗号或引号,如stackoverflow.com/questions/12756651/… -
谢谢你们俩。这是一件非常小的事情,所以我只是按照@Pshemo 的建议使用了这两个测试并且它起作用了
-
你答对了吗?
-
@payamsbr 我想是的。它没有引发任何异常,数据看起来还不错。我需要仔细检查一些数据才能确定。你认为它不应该因为一个错误而工作吗?
标签: java regex string csv split