我想要一个可以匹配以下名称的正则表达式:
Standard_DS1_v2
Standard_DS2_v2
...
Standard_DS15_v2
Standard_DS1
Standard_DS2
...
Standard_DS14
Standard_GS1
Standard_GS2
...
Standard_GS5
现在我有以下正则表达式:
private const string PremiumStorageRoleSizesRegex = @"^Standard_((DS)|(GS))\d+$";
machineSizeMetadatas = machineSizeMetadatas.Where(metadata => Regex.IsMatch(metadata.Name, PremiumStorageRoleSizesRegex));
但我不知道如何处理第一个序列(Standard_DS1_v2
)。
如何更改正则表达式?
答案 0 :(得分:2)
您可以将此正则表达式与可选组一起使用:
^Standard_(DS|GS)\d+(?:_v\d+)?$
^^^^^^^^^^
或者更简单^Standard_[DG]S\d+(?:_v\d+)?$
以避免交替组。请参阅regex demo
您可以在任何需要的地方添加捕获组。
模式详情:
^
- 字符串开头Standard_
- 文字Standard_
子字符串(DS|GS)
- DS
或GS
字符串(您可以将其替换为[DG]S
)\d+
- 一位或多位(?:_v\d+)?
- _
+ v
+ 1个或多个数字的1或0(=可选)序列$
- 字符串结束。