如何对select语句中的值进行正则表达式

问题描述 投票:0回答:1

我可能需要一些有关正则表达式的帮助。

我的目标是获取在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+)`

在这种情况下,不允许使用通配符。

java regex regex-lookarounds
1个回答
0
投票

部分使用正则表达式的解决方案:

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
© www.soinside.com 2019 - 2024. All rights reserved.