【问题标题】:RegEx match another pattern if first pattern fails如果第一个模式失败,RegEx 匹配另一个模式
【发布时间】:2015-03-20 16:25:49
【问题描述】:

这是我失败的逻辑: If the input is 14 characters, return characters 9 through 13. Otherwise, return everything.

(?<=^.{8}).{5}(?=.$) 按我的预期工作,将字符 9 到 13 作为结果集传递。如果我将|.* 附加到正则表达式以生成(?<=^.{8}).{5}(?=.$)|.*,它总是会返回所有内容。显然我的做法是错误的。

有什么意见吗?

【问题讨论】:

    标签: .net regex regex-lookarounds


    【解决方案1】:
    ^(?=.{14}$).{8}(.*).$|^.*$
    

    试试这个。当字符串为 14 个字符时,这将返回来自 9 to 13 的字符。参见演示。

    https://regex101.com/r/pT4tM5/29

    【讨论】:

      【解决方案2】:

      我确信 Regex 是必需的,但由于您只处理字符串长度,因此您也可以使用子字符串

      input.Length == 14 ? return input.Substring(8,5) : input;
      

      【讨论】:

      • 史蒂夫,谢谢你提出这个问题,因为我相信有些人会很难做到这一点。您是正确的,在我的情况下,RegEx 是一项要求——应用程序已完成,并且 RegEx 可以根据每个客户进行定制。谢谢!
      猜你喜欢
      • 2020-02-09
      • 2014-03-19
      • 2015-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多