gpt4 book ai didi

java - 使用 Pattern 和 Matcher 类在 java 中模式匹配 grant 语句

转载 作者:行者123 更新时间:2023-12-01 05:09:33 25 4
gpt4 key购买 nike

对于 DB2 示例,拨款如下所示。

grant insert,update,delete on ABC.TABLE_NAME to group DACT_RW, group DACT_RW_BATCH1

我正在尝试使用以下内容构建正则表达式模式:

Pattern.compile("[g|G][r|R][a|A][n|N][t|T][ \\t\\n\\x0B\\f\\r]+[i|I][n|N][s|S][e|E][r|R][t|T][ \\t\\n\\x0B\\f\\r]*[,][ \\t\\n\\x0B\\f\\r]*[u|U][p|P][d|D][a|A][t|T][e|E][ \\t\\n\\x0B\\f\\r]*[,][ \\t\\n\\x0B\\f\\r]*[d|D][e|E][l|L][e|E][t|T][e|E][ \\t\\n\\x0B\\f\\r]+[o|O][n|N][ \\t\\n\\x0B\\f\\r]+" + eodAppendedDbObjectName + "[ \\t\\n\\x0B\\f\\r]+[t|T][o|O][ \\t\\n\\x0B\\f\\r]+[g|G][r|R][o|O][u|U][p|P][ \\t\\n\\x0B\\f\\r]+DACT_RW[ \\t\\n\\x0B\\f\\r]*[,][g|G][r|R][o|O][u|U][p|P][ \\t\\n\\x0B\\f\\r]+DACT_RW_BATCH1$");

但不知何故,即使我指定了正确的补助金,它也没有得到匹配。

你能建议一下上面的模式编译有什么问题吗?或者建议更好的方法来匹配java中的模式。

最佳答案

我通过将 [\\t\\n\\x0B\\f\\r] 替换为 \\s 简化了语句,这有效。

public static void main(String [] args) {
String[] vals = {"grant insert,update,delete on ABC.TABLE_NAME to group DACT_RW, group DACT_RW_BATCH1"};
String eodAppendedDbObjectName = "ABC.TABLE_NAME";
Pattern p = Pattern.compile("[gG][rR][aA][nN][tT]\\s+[iI][nN][sS][eE][rR][tT]\\s*,\\s*[uU][pP][dD][aA][tT][eE]\\s*,\\s*[dD][eE][lL][eE][tT][eE]\\s+[oO][nN]\\s+" + eodAppendedDbObjectName + "\\s+[tT][oO]\\s+[gG][rR][oO][uU][pP]\\s+DACT_RW\\s*,\\s*[gG][rR][oO][uU][pP]\\s+DACT_RW_BATCH1$");
for (String s : vals) {
Matcher m = p.matcher(s);
if (m.matches()) {
System.out.println(s + " matches.");
} else {
System.out.println(s + " does not match.");
}
}
}

关于java - 使用 Pattern 和 Matcher 类在 java 中模式匹配 grant 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12215583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com