gpt4 book ai didi

java - 用于提取列名称和值的正则表达式不起作用

转载 作者:行者123 更新时间:2023-11-29 04:37:34 24 4
gpt4 key购买 nike

在 java 中,我尝试使用 RegexMatcher 提取列名及其值,但不知道我在这里做错了什么。

    String sql = "INSERT INTO MyTable (column1, column2, column3, column4, column5 ) VALUES (1, 'Hi', 'A,B', '', null)";
String pattern = "INSERT INTO.*((\\w)+).*\\((.*)\\).*VALUES.*\\((.*)\\)";

Pattern r = Pattern.compile(pattern);

Matcher m = r.matcher(sql);
if (m.find()) {
System.out.println("Found value: " + m.group(0));
System.out.println("Found value: " + m.group(1));
System.out.println("Found value: " + m.group(2));
} else {
System.out.println("NO MATCH");
}

期望:

Group-1 = column1, column2, column3, column4, column5
Group-2 = 1, 'Hi', 'A,B', '', null

最佳答案

不要在正则表达式中使用贪婪的 .*。您可以使用此正则表达式:

\bINSERT\s+INTO\s+\S+\s*\(([^)]+)\)\s*VALUES\s*\(([^)]+)\)

在 Java 中:

String regex = "\\bINSERT\\s+INTO\\s+\\S+\\s*\\(([^)]+)\\)\\s*VALUES\\s*\\(([^)]+)\\)";

这将给出:

Group 1: "column1, column2, column3, column4, column5 "
Group 2: "1, 'Hi', 'A,B', '', null"

RegEx Demo

关于java - 用于提取列名称和值的正则表达式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40675209/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com