regexjava:如何在运行时使用变量参数正确构造正则表达式
通过变量参数数量动态创建正则表达式的最佳方法是什么
例如,如果我的正则表达式的形式为:
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+)?)?)?)?)?)";
如果有良好的支持,正则表达式不适合这些构造的答案是可以接受的
# 1 楼答案
您可以编写一个递归函数,该函数将以您给出的第一个示例的形式生成正则表达式字符串:
你将不得不自己测试和调试这段代码,但它应该会给你一个想法。(如果你确实发现了漏洞,请为以后的其他人编辑此帖子。)