如果第一个模式失败,则RegEx匹配另一个模式

时间:2015-03-20 16:25:50

标签: .net regex regex-lookarounds

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

(?<=^.{8}).{5}(?=.$)正如我所期望的那样,以字符9到13作为结果集传递。如果我将|.*附加到RegEx以生成(?<=^.{8}).{5}(?=.$)|.*,它会始终返回所有内容。我显然是错误的。

任何输入?

2 个答案:

答案 0 :(得分:2)

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

试试这个。当字符串为14个字符时,这将从9 to 13返回字符。请参阅演示。

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

答案 1 :(得分:1)

我确定Regex是一个要求,但由于你只处理字符串长度,你也可以使用子字符串

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