Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Regex获取一个值_Java_Regex - Fatal编程技术网

Java Regex获取一个值

Java Regex获取一个值,java,regex,Java,Regex,我想找到一个正则表达式,在下面的查询中找到originaldbname的值,其中tablename将作为参数传递。有可能吗。尝试了很多东西,但现在都奏效了 REPLACE WITH viewdbname.tablename as locking row for access select * from originaldbname.tablename 编辑: 我正在运行以下程序,使其达到原始值 String query = "REPLACE WITH viewdbname.tablename

我想找到一个正则表达式,在下面的查询中找到originaldbname的值,其中tablename将作为参数传递。有可能吗。尝试了很多东西,但现在都奏效了

REPLACE WITH viewdbname.tablename as locking row for access select * from originaldbname.tablename

编辑:
我正在运行以下程序,使其达到原始值

String query = "REPLACE WITH viewdbname.tablename as locking row for access select * from original.tablename";
Pattern p=Pattern.compile("from\\s+(?:\\w+\\.)*(\\w+)($|\\s+[WHERE,JOIN,START\\s+WITH,ORDER\\s+BY,GROUP\\s+BY])",Pattern.CASE_INSENSITIVE);
Matcher m=p.matcher(query);
while(m.find()) System.out.println(m.group(1));
//But it is returning me tablename... I want to get "original" as output.
您有
(?:\\w+\\)*(\\w+)
其中
(?:)
是一个不匹配的组,您的第一个匹配组是
(\\w+)
点之后

您可以使用这个较短的regexp来捕获
点之前的可选单词:

Pattern.compile(“from\\s+(?:(\\w+\\)?\\w+”,Pattern.CASE不区分大小写)

如果您只想要“原始”,可以:

    String query = "REPLACE WITH viewdbname.tablename as locking row for access select * from original.tablename";
    Pattern p = Pattern.compile("from\\s+(.+)\\.");

    Matcher m = p.matcher(query);
    if (m.find()) {
        System.out.println(m.group(1));
    }

请更好地解释你的问题,我正在按原值运行下面的程序String query=“替换为viewdbname.tablename作为access的锁定行,从原始.tablename中选择*”;Pattern p=Pattern.compile(“from\\s+(?:\\w+\\)*(\\w+)($\\\s+[WHERE,JOIN,START\\s+WITH,ORDER\\s+BY,GROUP\\s+BY]),Pattern;//test Matcher m=p.Matcher(查询);而(m.find())System.out.println(m.group(1));`但它正在返回我的表名。。。我想把“原件”作为输出。谢谢。这就是我需要的