请在下面找到我的代码的相关片段:
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”,则该函数不起作用。有人可以提供修改正则表达式的建议吗?
谢谢。
最佳答案
您正在使用word boundaries \b 。要捕获类似 NFkappaB
的内容,您需要删除该限制。
if (str.toLowerCase().matches(".*"+GREEK+".*")) return 1;
现在这显然会捕获诸如 alphagammakappa
之类的内容,因此除非有特定的规则来捕获诸如 NFkappaB
之类的内容(例如以 2 个字母开头并以 1 结尾),那么如果没有涉及 lookarounds 的复杂正则表达式,您几乎无能为力以避免这种情况。
关于java - 检查字符串是否包含希腊字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10484795/