java - 在 Java 中读取 CSV 的正则表达式

标签 java regex split token

<分区>

Possible Duplicate:
Parsing CSV input with a RegEx in java

我有一个输入文件,其中每一行都有以下形式的字符串输入值:

   "  ab  cd  " ,    "  efgh,ijk.",  4,"lmno"

即,

  1. 这些词要么在引号中,要么没有引号。
  2. 起始词和结束词前后不允许有空格。

编辑:3. 它的输入可以用逗号分隔。(abc,"Hi Mary,Joe",5)

在 java 中使用 .Split(),我需要一个正则表达式来输出:

ab  cd
efgh,ijk.
4
lmno

我试过这个:

[^",]*[\",]

但这不适用于 "efgh,ijk."

这是正则表达式测试的链接:http://regexpal.com/ 我需要一些帮助。请帮忙。 谢谢

最佳答案

DEMO

正则表达式模式:(?:\s*(?:\"([^\"]*)\"|([^,]+))\s*,?)+?

空值更新:(?:\s*(?:\"([^\"]*)\"|([^,]+))\s*,?|(?<=,)(),?)+? DEMO

它的一个例子,我知道它有点像 CSV 格式,但只要你不写非常非常奇怪的东西,它就会匹配所有这些。

Matcher ma = Pattern.compile("(?:\\s*(?:\\\"([^\\\"]*)\\\"|([^,]+))\\s*,?)+?").matcher("   \"  ab  cd  \" ,    \"  efgh,ijk.\",  4,\"lmno\"");
while (ma.find()) {
    if (ma.group(1) == null) {
        System.out.println(ma.group(2));
    } else {
        System.out.println(ma.group(1));
    }
}

编辑,顺便说一句,如果您希望我们为您提供代码,请不要告诉我们有关正则表达式在线测试器的信息,如果您这样做是因为您知道如何处理正则表达式,如果您不知道该怎么做那个,也问吧。

关于java - 在 Java 中读取 CSV 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13259529/

相关文章:

java - 按下按钮后 JPanel 不显示更新

javascript - 如何使用 .replace 删除字符串的一部分(如果该部分存在于数组中)?

regex - Linux 正则表达式 - 删除文件

sql-server - 在循环中读取 Sql 服务器中的逗号分隔字符串

C#:拆分字符串并将结果分配给多个字符串变量

java - 处理 2.1.1 - 屏幕上同时出现多个项目?

java - 将 java System.out.println 重定向到 jruby 中的文件

java - 错误 "Cannot find symbol method charAt(int)"?

Java8 : About order of Map elements returned by Collectors. 分组依据

javascript - 正则表达式 - 替换行尾,而不是字符串?