检查String是否包含希腊字符串

时间:2012-05-07 15:30:40

标签: java regex contain

请在下面找到我的代码的相关摘要:

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”则不起作用。有人可以提供修改正则表达式的建议吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

您正在使用word boundaries \b。要捕获NFkappaB之类的内容,您需要删除该限制。

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

现在这显然会捕获像alphagammakappa这样的内容,所以除非有特定的规则来捕获像NFkappaB这样的东西(例如以2个字母开头并以1结尾),否则你几乎无能为力没有涉及lookarounds的复杂正则表达式来避免这种情况。