Java正则表达式:拆分逗号分隔值但忽略引号中的逗号

我的文字如下:

"text","1","more, more text","3" 

任何人都可以告诉我我必须使用什么正则表达式来获得以下内容:

 text 1 more, more text 3 

我在这里阅读Sun教程,直到“匹配器类的方法”,但我仍然不知所措。 谢谢!

如果它像text,1,more它会很容易,但不幸的是它不是那样的。 有任何想法吗?

您可以像这样直接使用split()方法:

  String text = "\"text\",\"1\",\"more, more text\",\"3\""; String[] split = text.split("\"(,\")?"); for (String string : split) { System.out.println(string); } 

(请注意,这将返回长度为5的数组,第一个位置为空字符串)

或者,如果你想使用Pattern / Matcher,你可以这样做:

  Pattern pattern = Pattern.compile("\"([^\"]+)\""); Matcher matcher = pattern.matcher(text); while(matcher.find()){ System.out.println(matcher.group(1)); } 

试试这个模式: "(.+?)"

它将匹配双引号之间的1个或多个字符。 引号之间的文本部分可用作matcher.group(1)

查看Pattern类的javadoc以了解更多信息。 另外,请查看matcher.find()方法。

你可以尝试这个[^\"]+(?

你可以得到每个以"和另一个完成"开头的部分,然后对每个部分的第一个和最后一个字符进行子串。

 "[^"]*" 

好像是! 在java字符串中,您可以使用

 "\"[^\"]*\"" 

您可以在这里在线测试: http : //www.regexplanet.com/simple/index.html

你可以试试这样的东西。 我知道,这不是很好的解决方案,但它可以帮助你:)

 string[] s=text.split("\",\""); s[0]=s[0].substring(1); s[s.length-1]=s[s.length-1].substring(0,s[s.length-1].length);