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