gpt4 book ai didi

regex - 正则表达式匹配部分或全部字符串

转载 作者:行者123 更新时间:2023-12-01 09:06:11 27 4
gpt4 key购买 nike

我根据变量的结果动态创建正则表达式。我已经成功测试了大部分表达式,但我在长度可能变化的部分上遇到了困难。

如何修改正则表达式 (a_)?c(davison)\.nsf? 以便将以下任何字符串归类为匹配项?

  • a_cdavis.nsf
  • cdavison.nsf
  • cdaviso.nsf
  • cdavis.nsf

本质上,要被视为匹配,字符串必须满足以下条件 -

  1. “(a_)?” - 可以以“a_”开头,但不一定如此
  2. “c” - 必须包含小写字母“c”
  3. “(davison)” - 我做不到的事情 - 必须包含部分或全部“davison”,从头开始(所以“dav”可以接受,但“儿子”则不行)
  4. “.nsf” - 必须以“.nsf”结尾
  5. 长度 - 长度不超过 12 个字符,包括字符串开头的可选“_a”和字符串末尾所需的“.nsf”。

任何提示和技巧将不胜感激。

最佳答案

要使 davison 的每个部分可选,请使用嵌套可选组 ((?:...)?),并设置由于长度限制,如果找到 13 个字符,您可以使用锚定在开头的负向前查找来使匹配失败(因此,(?!.{13}) 将允许 12 个及更少字符的字符串尺寸):

^(?!.{13})(a_)?c(d(?:a(?:v(?:i(?:s(?:on?)?)?)?)?)?)\.nsf$

请参阅regex demo

关于regex - 正则表达式匹配部分或全部字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37208205/

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