如果第一个模式失败,正则表达式匹配另一个模式

RegEx match another pattern if first pattern fails

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

(?<=^.{8}).{5}(?=.$) 如我所料,将字符 9 到 13 作为结果集传递。如果我将 |.* 附加到 RegEx 以生成 (?<=^.{8}).{5}(?=.$)|.*,它总是 returns 一切。我显然做错了。

有输入吗?

^(?=.{14}$).{8}(.*).$|^.*$

试试这个。当字符串是 14 characters.See 演示时,这将来自 9 to 13 的 return 个字符。

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

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

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