我可能需要一些有关正则表达式的帮助。
我的目标是获取在select语句中使用的值。
样本1:select value1,value2,value3 from db where x=y
预期结果:
Group1 = value1
Group2 = value2
Group3 = value3
样本2:SELECT value1, value2 from db
预期结果:
Group1 = value1
Group2 = value2
样本3:SelecT value1, value2, value3 from db where x=ya
预期结果:
Group1 = value1
Group2 = value2
Group3 = value3
我当前的尝试对第一个值起作用……
`(?<=(?is)SELECT\s)(\w+)`
在这种情况下,不允许使用通配符。
class Main {
public static void main(String args[]) {
// Test strings
String[] arr = { "select value1,value2,value3 from db where x=y", "SELECT value1, value2 from db",
"SelecT value1, value2, value3 from db where x=ya" };
for (String s : arr) {
System.out.println("Processing '" + s + "'");
String upper = s.toUpperCase();
int startIndex = upper.indexOf("SELECT");
int endIndex = upper.indexOf("FROM");
String substring = s.substring(startIndex + "SELECT".length(), endIndex).trim();
String[] values = substring.split(",\\s*");
int i = 1;
for (String value : values) {
System.out.println("Group" + (i++) + " = " + value);
}
}
}
}
输出:
Processing 'select value1,value2,value3 from db where x=y'
Group1 = value1
Group2 = value2
Group3 = value3
Processing 'SELECT value1, value2 from db'
Group1 = value1
Group2 = value2
Processing 'SelecT value1, value2, value3 from db where x=ya'
Group1 = value1
Group2 = value2
Group3 = value3