我遇到了Perl模块Regexp::Assemble,它接受任意数量的正则表达式,并将它们组合成一个与所有正则表达式匹配的正则表达式。
是否有类似的Java库?为每个输入编写组合正则表达式将非常繁琐。
答案 0 :(得分:2)
regexp可能对你有所帮助......链接指向一个类似于你想要的例子,但我不确定它是否适用于Regex字典。此外,您可能希望通过电子邮件发送作者,我相信他可以帮助您找到确切用例的解决方案。
答案 1 :(得分:0)
我认为这只是OR
正则表达式的问题。例如如果您有正则表达式[abc]+
和[xyz]+
,则可以将它们与(regex1|regex2)
结合使用,即([abc]+|[xyz]+)
。添加更多正则表达式只需添加更多|
子句。因此,您不需要像循环那样的“生成器”。例如:
import org.apache.commons.lang.StringUtils;
List<String> regexlist = new ArrayList<String>();
BufferedReader br = new BufferedReader(new FileReader(file));
String line = null;
while ((line = br.readLine()) != null) {
regexlist.add(line);
}
String regex = "(?:" + StringUtils.join(regexlist, "|") + ")";
答案 2 :(得分:0)
对于我的用例,我用Regexp :: Assemble编写了一个脚本,它将生成我想要的RE集并将它们写入文件,由主java应用程序读取 - 这对你有用吗?