Possible Duplicate:
Parsing CSV input with a RegEx in java
我有一个输入文件,其中每一行都有以下形式的字符串输入值:
" ab cd " , " efgh,ijk.", 4,"lmno"
即,
- 这些词要么在引号中,要么没有引号。
- 起始词和结束词前后不允许有空格。
编辑: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));
}
}
编辑,顺便说一句,如果您希望我们为您提供代码,请不要告诉我们有关正则表达式在线测试器的信息,如果您这样做是因为您知道如何处理正则表达式,如果您不知道该怎么做那个,也问吧。