从SQL插入查询字符串中提取引用值

时间:2014-03-20 22:20:53

标签: java regex string split

我正在尝试使用split来拆分字符串。但是我很难想出一个符合我需求的正则表达式。字符串看起来像这样:

INSERT INTO  VALUES ('Cardinal','Tom B. Erichsen','Skagen 21','Stavanger',4006,'Norway');

我需要能够检索''之间的所有值。关键是保持字符串不变。因此Tom B. Erichsen应该是一个字符串,而不是分成TomB.Erichsen

另一件事是整数不会被''包围。

有人可以就如何使用拆分或其他方式解析这些信息给我一些建议吗?

2 个答案:

答案 0 :(得分:0)

我做到了。

它不是有效的SQL(没有表格),但我确定它只是一个例子。

我首先从括号中拉出子串。

然后我将假设以逗号分隔的值分开。

然后我会处理每个值。

不是微不足道的,也不是一步。

可能是SQL INSERT的语法和词法分析器/解析器会更好。试着看看ANTLR。

答案 1 :(得分:0)

此代码适用于您提供的示例..

 String query = "INSERT INTO  VALUES ('Cardinal','Tom B. Erichsen','Skagen 21','Stavanger',4006,'Norway');";
    String inside = query.substring(query.indexOf("(")+1, query.indexOf(")"));
    String[] elements = inside.split(",");
    for (String string : elements) {
        if(string.startsWith("'")){
            string = string.substring(1,string.length()-1);
        }
        System.out.println(string);
    }