Java 正则表达式与字符串完全匹配

Java 正则表达式与字符串完全匹配,java,regex,Java,Regex,我有下面的字符串,我使用正则表达式拆分它,得到一个数组中的id,id,product\u临床研究,product\u rimr,product\u rim,product\u v。 这适用于大多数情况。但对于下面的字符串,因为其中包含的内容失败。我如何才能精确匹配IN/SELECT等 id IN (SELECT id FROM product_clinical_studies__rimr WHERE product__rim CONTAINS {{this.product__v}})

我有下面的字符串,我使用正则表达式拆分它,得到一个数组中的id,id,product\u临床研究,product\u rimr,product\u rim,product\u v。 这适用于大多数情况。但对于下面的字符串,因为其中包含的内容失败。我如何才能精确匹配IN/SELECT等

 id IN (SELECT id FROM  product_clinical_studies__rimr  WHERE product__rim CONTAINS {{this.product__v}})


String[] parseString(String filterInString) {
    return filterInString.replaceAll("(?i)CONTAINS|IN|SELECT|FROM|WHERE|(this\\.)|[(){}=,]|(\\s{2,})", " ").
            replaceAll("\\s+", " ").split("\\s");
}

如果不能通过空格进行识别,则将其作为两个过程运行。第一遍是所有唯一的对象,第二遍是“IN”。

您可以去掉
(?i)
,或者在
文字

(?i)\b(?:包含| IN |选择| FROM | WHERE)\b |(this\)|[(){}=,]|‌​(\s{2,})

如果您需要匹配
关键字/keyword/./..
运行,这可能会起作用

(?i)\b(?:包含| IN |选择| FROM | WHERE)(?:/(?:包含| IN | SE)‌​选择|从|何处|))*\b‌​|(这个\.)|[(){}=,]|(‌​\s{2,})

扩大

    (?i)
    \b 
    (?:
         CONTAINS
      |  IN
      |  SELECT
      |  FROM
      |  WHERE
    )
    (?:
         /
         (?:
              CONTAINS
           |  IN
           |  SELECT
           |  FROM
           |  WHERE
         )
    )*
    \b 
 |  ( this\. )                    # (1)
 |  [(){}=,] 
 |  ( \s{2,} )                    # (2)

每个关键字之前或之后是什么?空格,行首,行尾?其他文本?你能假设“IN”会像IN一样被空格包围吗![A-Za-z0-9]和其他语法符号?与“整词”一样,你可以在每个词的前后加上空格或词边界(
\b