Java正则表达式2忽略2个单词之间的模式,如果是conditio应该说匹配

时间:2017-02-11 05:40:06

标签: java

我必须找出from和IN_TXT之间的匹配,并且应该忽略两个单词之间的任何内容,并说它是匹配的。我尝试使用下面的表达但不起作用。,

String table="IN_TXT";
String s="select * from JAN_X.IN_TXT";
if((s.matches("from"+"(.*)"+table))){
   System.out.println``("Matched");
}

这里可能缺少什么?

1 个答案:

答案 0 :(得分:1)

matches会添加^$锚点,因此您的正则表达式与您的输入不完全匹配

因此您可以将.*?用作.*?from"+"(.*)"+table,其中.*?将覆盖from之前发生的字符串

.*?匹配尽可能少的次数

String s = "select * from JAN_X.IN_TXT";
String table = "IN_TXT";
if ((s.matches(".*?from" + "(.*)" + table))) {
    System.out.println("Matched");
}

如果要提取JAN_X,则可以使用

    // $1 represents  (.*) capture group
    String s2= s.replaceAll(".*?from (.*)\\."+table,"$1");
    System.out.println(s2);

输出

JAN_X