我根据变量的结果动态创建一个正则表达式。我已成功测试了大部分表达方式,但我正在努力解决长度不同的部分。
如何修改正则表达式(a_)?c(davison)\.nsf?
,以便将以下任何字符串归类为匹配?
基本上,要被视为匹配,字符串必须符合以下条件 -
任何提示和提示都将不胜感激。
答案 0 :(得分:5)
要使davison
的每个部分都可选,请使用嵌套的可选组((?:...)?
),并设置长度限制,您可以使用固定在如果找到13个字符,则开始使匹配失败(因此,(?!.{13})
将允许12个字符串和更少字符的字符串):
^(?!.{13})(a_)?c(d(?:a(?:v(?:i(?:s(?:on?)?)?)?)?)?)\.nsf$
请参阅regex demo