我需要形成一个正则表达式来检查响应日志的输出。日志文件将始终根据输入而有所不同。因此,我想根据函数的输入创建一个动态正则表达式。我可能需要一次传递可变数量的变量进行比较,那么如何在正则表达式中插入“或”因子?
是否可以在 Java 中创建这样的正则表达式,我应该如何去做?
是的,正则表达式只是一个字符串,您可以将用户输入连接到常量部分,然后从中创建一个模式。
如果您想逐字匹配用户输入,则应使用正则表达式对其Pattern.quote("UserString")
进行转义。
例子:
String UserInput = "Bar()";
String Prefix = "Foo";
Pattern p = Pattern.compile(Prefix + Pattern.quote(UserInput));
String s1 = "FooBar()";
String s2 = "FooBarNo";
String[] s = { s1, s2};
for (String a : s) {
Matcher m = p.matcher(a);
if (m.find())
System.out.println(a + " ==> Success");
else
System.out.println(a + " ==> Failure");
}
输出:
FooBar() ==> 成功
FooBarNo ==> 失败
我认为你可以通过连接来做到这一点。例如:“你的正则表达式”+“{”+输入+“}”。