我正在将 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/