是否有动态方式为模式构建java正则表达式?

时间:2012-01-12 01:02:51

标签: java

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

这是当前代码的一行:

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

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

1 个答案:

答案 0 :(得分:3)

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

只需创建一个您正在检查的数组(例如,“harmon”,“white sands”)并在数组上循环执行包含:valueFromFile.contains(arrayItem)

如果匹配,请设置一个标志并退出。不要忘记使用小写valueFromFile,以便不区分大小写。

如果您确实需要正则表达式,请使用matches代替contains

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