4

我需要形成一个正则表达式来检查响应日志的输出。日志文件将始终根据输入而有所不同。因此,我想根据函数的输入创建一个动态正则表达式。我可能需要一次传递可变数量的变量进行比较,那么如何在正则表达式中插入“或”因子?

是否可以在 Java 中创建这样的正则表达式,我应该如何去做?

4

2 回答 2

4

是的,正则表达式只是一个字符串,您可以将用户输入连接到常量部分,然后从中创建一个模式。

如果您想逐字匹配用户输入,则应使用正则表达式对其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 ==> 失败

于 2012-04-16T11:00:10.420 回答
0

我认为你可以通过连接来做到这一点。例如:“你的正则表达式”+“{”+输入+“}”。

于 2020-08-27T21:30:59.853 回答