java - 有没有一种为模式构建 Java 正则表达式的动态方法?

标签 java

我正在将 perl 程序转换为 java。在 perl 脚本中,根据数百个正则表达式模式检查从文件中读取的值。我不想像在原始 perl 程序中那样静态地执行此操作。是否有任何类型的设计模式可用于使其更具动态性?

这是当前代码的一行:

$flag++ if ($Part_Name =~ /(harmonic|nsg|white\ sands|sphix|battery|collection|allied)/i);

现在再重复 50-60 行,这就是行数。正在测试的唯一字符串实际上是独立的,最后我们只关心 if ($flag > 0)。

最佳答案

看起来您实际上不需要使用正则表达式。

只需创建一个包含您要检查的内容的数组(例如,“harmonic”、“white sands”)并在该数组上循环执行包含操作:valueFromFile.contains(arrayItem)

如果匹配,则设置标志并退出。不要忘记将 valueFromFile 小写,这样您就可以不区分大小写了。

如果您确实需要正则表达式,请使用 matches 而不是 contains

注意:可能有一种方法可以在不显式循环数组的情况下执行此操作,但我已经有一段时间没有编写 Java 了(如果有,请随时编辑)。

关于java - 有没有一种为模式构建 Java 正则表达式的动态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8829111/

相关文章:

java - 将实例变量分配给某个值而不是在构造函数中声明是否好

Java链表优先级队列

java - 在 Swing 中获取选定的单选按钮列表

java - 使用@Transactional时无法捕获的异常

java - hibernate 跳过并采取一些行

java - 如果分页存在,则使用 Selenium 解析链接

java - 为什么死代码警告?

java - SearcherManager maybeRefresh 方法没有发生

java - Tika、Maven、依赖项...为什么 Tika 使用 EmptyParser?

java - Grails 上的 NoClassDefFoundError GANT 脚本