【问题标题】:How to extract the alias from a table with regex?如何使用正则表达式从表中提取别名?
【发布时间】:2019-10-16 09:54:21
【问题描述】:

我需要在 java 中获取一个表的别名,用于这个正则表达式。
例如,对于这个字符串:FROM lineitem A INNER JOIN orders B ON (B.O_ORDERKEY = A.L_ORDERKEY) INNER JOIN customer C ON (C.C_CUSTKEY = B.O_ORDERKEY) 我应该得到 A, B, C
如何在 java 中使用正则表达式来做到这一点?

【问题讨论】:

    标签: java sql regex


    【解决方案1】:

    如果我们所有的输入都与问题相似,我们将从一个简单的表达式开始,然后用更多输入进行测试:

    \s+([A-Z])\s+
    

    DEMO

    测试

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    final String regex = "\\s+([A-Z])\\s+";
    final String string = "FROM lineitem A INNER JOIN orders B ON (B.O_ORDERKEY = A.L_ORDERKEY) INNER JOIN customer C ON (C.C_CUSTKEY = B.O_ORDERKEY)";
    
    final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
    final Matcher matcher = pattern.matcher(string);
    
    while (matcher.find()) {
        System.out.println("Full match: " + matcher.group(0));
        for (int i = 1; i <= matcher.groupCount(); i++) {
            System.out.println("Group " + i + ": " + matcher.group(i));
        }
    }
    

    正则表达式电路

    jex.im 可视化正则表达式:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-06
      • 2018-10-19
      • 1970-01-01
      相关资源
      最近更新 更多