有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我可以使用正则表达式从短语中解析单词吗?

我试图从insert语句列表中解析表名,所有语句的形式都是insert into table_a。对于该声明,我想找到名称table_a

我目前做这件事的代码相当笨拙,这可以用正则表达式来完成吗

    int index = query.indexOf("insert into");
    if (index >= 0) {
        query = query.substring(index + "insert into".length());
        query = query.trim();

        index = query.indexOf(" ");
        if (index >= 0)
            return query.substring(0, index);
        else
            return query; // tablename is last word in query
    }

共 (1) 个答案

  1. # 1 楼答案

    是的,正则表达式在这里应该有帮助:

    String input = "INSERT INTO tableA ... INSERT INTO tableB";
    String pattern = "insert into ([\\s]+)";
    List<String> tables = new ArrayList<>();
    
    Pattern r = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE);
    
    Matcher m = r.matcher(input);
    while (m.find()) {
        tables.add(m.group(1));
        System.out.println(m.group(1));
    }
    
    tableA
    tableB
    

    Demo

    注意,我假设您的表名没有空格。如果是这样,那么更好的方法是匹配到左括号,假设您的insert语句是标准SQL