0

请在下面找到我的代码的相关片段:

public static final String GREEK = "(alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)";

public static int setHasGreek(String str) {
    if (str.toLowerCase().matches(".*\\b"+GREEK+"\\b.*")) return 1;
    return 0;
}

如果字符串只是希腊字符串(如“gamma”或“delta”等),则该函数可以正常工作,但是如果我的字符串是“NFkappaB”,则它不起作用。有人可以提供修改正则表达式的建议吗?

谢谢你。

4

1 回答 1

1

您正在使用单词边界 \b。要捕获类似的东西,NFkappaB您需要删除该限制。

if (str.toLowerCase().matches(".*"+GREEK+".*")) return 1;

现在这显然会捕获任何类似的东西alphagammakappa,除非有特定的规则来捕获诸如NFkappaB(例如以 2 个字母开头并以 1 结尾)之类的东西,那么如果没有涉及环视的复杂正则表达式来避免这种情况,您几乎无能为力。

于 2012-05-07T15:57:15.877 回答