java - 检查字符串是否包含希腊字符串

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

谢谢。

最佳答案

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

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

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

关于java - 检查字符串是否包含希腊字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10484795/

相关文章:

HTML响应式网站

mysql - CakePHP 3.x - 如何通过另一个关联的字段过滤一个关联?

java - 从java中的字符串中获取<img>值

python - 谷歌应用引擎正则表达式

javascript - 验证十六进制文本字段不起作用

java - Eclipse 插件的跨项目版本控制

mysql - 包含 MySQL 函数 - 意外结果

java - 在 Java 中将一个列表映射到另一个列表的最优雅的方法是什么?

java - 使用 JUnit 和 Spring 测试应用程序的持久性重启

java - 点燃缓存错误