在逗号上拆分字符串,但在括号内不是逗号

时间:2013-04-03 18:50:47

标签: java regex

现在我有一个关于Java IO的任务,我需要逐行读取文件并将这些数据保存到数据库中,但是现在我遇到了问题。

"desk","12","15","(small,median,large)"

我想使用string.split(",")拆分,并将数据保存到每一列。但是我发现()中的数据也被拆分了,我不想拆分(小,中,大),我想保持这种完整性。我怎样才能做到这一点?我知道我可以使用regualr表达式,但我真的不知道该怎么做?

3 个答案:

答案 0 :(得分:0)

或者,如果Java必须是:),你可以用“\\ s * \”\\ s *,\\ s * \“”进行拆分,然后在“必要时添加到第一个字段的开头”到第二个结束。 我放了\ s因为我看到你也有空白分隔符 - 15“,空白”(小

答案 1 :(得分:0)

您可以使用PatternMatcher解决此问题。使用拆分的任何解决方案看起来都是一个讨厌的解决方法。这是一个例子:

public static void main(String[] args){
    String s = "\"desk\",\"12\",\"15\",\"(small,median,large)\"";
    Pattern p = Pattern.compile("\".+?\"");
    Matcher m = p.matcher(s);
    List<String> matches = new ArrayList<String>();

    while (m.find()){
        matches.add(m.group());
    }

    System.out.println(matches);
}

答案 2 :(得分:0)

(\(.+?\)|\w+)

上面的代码与下面的结果匹配,这将允许更灵活的解决方案,其他一些发布的。正则表达式的语法在此页面的另一个答案中,只需使用此正则表达式


12个
15个
(小,中位数,大)