请在下面找到我的代码的相关摘要:
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”则不起作用。有人可以提供修改正则表达式的建议吗?
谢谢。
答案 0 :(得分:1)
您正在使用word boundaries \b。要捕获NFkappaB
之类的内容,您需要删除该限制。
if (str.toLowerCase().matches(".*"+GREEK+".*")) return 1;
现在这显然会捕获像alphagammakappa
这样的内容,所以除非有特定的规则来捕获像NFkappaB
这样的东西(例如以2个字母开头并以1结尾),否则你几乎无能为力没有涉及lookarounds的复杂正则表达式来避免这种情况。