用正则表达式解析Java中的Insert-SQL查询

用正则表达式解析Java中的Insert-SQL查询,java,sql,regex,Java,Sql,Regex,我想用正则表达式解析Java中的Insert查询 下面是示例字符串 INSERT INTO table_name (c1,c2,c3) VALUES (abc,def,ghi) , (jkl,mno,pqr) 我尝试了以下正则表达式: INSERT INTO ([A-Za-z][A-Za-z0-9_-]*) (?:\((.*)\))?\s*VALUES (\((,)?(.*)\))* 请帮助我如何获得所需的结果。对于这个查询的特定示例,下面的正则表达式应该可以实现这一点 插入(\S+)(\S+)

我想用正则表达式解析Java中的Insert查询

下面是示例字符串

INSERT INTO table_name (c1,c2,c3) VALUES (abc,def,ghi) , (jkl,mno,pqr) 我尝试了以下正则表达式:

INSERT INTO ([A-Za-z][A-Za-z0-9_-]*) (?:\((.*)\))?\s*VALUES (\((,)?(.*)\))*
请帮助我如何获得所需的结果。

对于这个查询的特定示例,下面的正则表达式应该可以实现这一点

插入(\S+)(\S+)\(\S+)、\(\S+)\(\S+)


您可以尝试以下正则表达式:

((?检查这是否有效

(INSERT INTO) (\S+).*\((.*?)\).*(VALUES).*\((.*?)\)(.*\;?)

我想要一个解析通用插入查询的解决方案。Ty从未想过使用Regex的Look-Behind功能。
Group1 : table_name
Group2 : c1,c2,c3
Group3 : (abc,def,ghi) , (jkl,mno,pqr)
Group4 : Empty
Group5 : abc,def,ghi) , (jkl,mno,pqr
import java.util.regex.*;

public class HelloWorld {
    public static void main(String []args){
        String test = "INSERT INTO table_name (c1,c2,c3) VALUES (abc,def,ghi) , (jkl,mno,pqr)";

        String regex = "((?<=(INSERT\\sINTO\\s))[\\w\\d_]+(?=\\s+))|((?<=\\()([\\w\\d_,]+)+(?=\\)))";

        Pattern re = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);

        Matcher m = re.matcher(test);
        while (m.find()) {
            System.out.println(m.group(0));
        }
     }
}
table_name
c1,c2,c3
abc,def,ghi
jkl,mno,pqr
(INSERT INTO) (\S+).*\((.*?)\).*(VALUES).*\((.*?)\)(.*\;?)