如何在java中使用regex从带引号的字符串中提取文本?

时间:2013-04-05 13:15:06

标签: java regex csv

我有一个像这样的字符串:

"0008934","1801 W NORMATOWN ROAD","ROMEOVILLE","IL","US","60446","8158866981","Y"

我想提取双引号内的所有值。能帮我完成任务吗?

这就是我所期待的:

0008934
1801 W NORMATOWN ROAD
ROMEOVILLE
IL
US
60446
8158866981
Y

任何人都可以请求帮助我吗?

4 个答案:

答案 0 :(得分:3)

你可以这样做:

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class RegexTest {

    public static void main(String[] args) {
        String strInput = "\"0008934\",\"1801 W NORMATOWN ROAD\",\"ROMEOVILLE\",\"IL\",\"US\",\"60446\",\"8158866981\",\"Y\"";
        Pattern pattern = Pattern.compile("\"([^\"]*)\"");
        Matcher matcher = pattern.matcher(strInput);
        while (matcher.find()) {
            System.out.println(matcher.group(1));
        }
    }
}

<强>输出:

0008934
1801 W NORMATOWN ROAD
ROMEOVILLE
IL
US
60446
8158866981
Y

答案 1 :(得分:2)

您可能还需要考虑OpenCSV,这是一个轻量级且简单的开源库,仅包含少量Java类。由于您的输入是CSV,OpenCSV可以为您执行此操作。

答案 2 :(得分:1)

使用剥离前导和尾随引号,然后拆分","

String[] parts = input.replaceAll("(^\")|(\"$)", "").split("\",\"");

答案 3 :(得分:0)

一旦遇到问题并尝试使用正则表达式解决问题,您就会遇到两个问题 考虑一下:

String[] list = input.split(",");  
foreach (String str : list){  
    str.replaceAll("\"","");
}