gpt4 book ai didi

Java:如何在运行时使用可变参数正确构造正则表达式

转载 作者:行者123 更新时间:2023-11-29 03:50:38 26 4
gpt4 key购买 nike

通过可变数量的参数动态创建正则表达式的最佳方法是什么?

例如如果我的正则表达式是以下形式:

String REGEX = "\\b(?:word1(?:(\\s+)word2(?:(\\s+)word3)?)?)";  

我想动态创建传递/替换 wordX 的正则表达式字符串,我想传递可变数量的单词,例如只有 2 个或 7 个。

即结束于:

REGEX = "\\b(?:cat(?:(\\s+)mouse(?:(\\s+)rain)?)?)";  

在一个电话中,在另一个电话中:

REGEX = "\\b(?:cat(?:(\\s+)mouse(?:(\\s+)rain(?:(\\s+)blue(?:(\\s+)?)?)?)?)?)";  

可以接受正则表达式不适合这些结构的答案,前提是它有很好的支持。

最佳答案

您可以编写一个递归函数,以您给出的第一个示例的形式生成正则表达式字符串:

String generateRegex(List<String> words)
{
if(words.isEmpty()) return "";
String word = words.remove(0);
return "\\b(?:" + word + generateInnerRegex(words) + ")";
}

String generateInnerRegex(List<String> words)
{
if(words.isEmpty()) return "";
String word = words.remove(0);
return "(?:(\\s+)" + word + generateInnerRegex(words) + ")?";
}

您必须自己测试和调试这段代码,但它应该能给您思路。 (如果您确实发现了错误,请为以后出现的任何其他人编辑此帖子。)

关于Java:如何在运行时使用可变参数正确构造正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8960948/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com