C# 如何将正则表达式更改为在数字后处理uuSYMBOL?
我想要一个可以匹配以下名称的正则表达式:C# 如何将正则表达式更改为在数字后处理uuSYMBOL?,c#,regex,C#,Regex,我想要一个可以匹配以下名称的正则表达式: Standard\u DS1\u v2 Standard\u DS2\u v2 … Standard\u DS15\u v2 Standard_DS1 标准\u DS2 … Standard_DS14 Standard\u GS1 Standard\u GS2 … Standard_GS5 现在我有了以下正则表达式: private const string PremiumStorageRoleSizesRegex = @"^Standard_((DS)
Standard\u DS1\u v2
Standard\u DS2\u v2
…
Standard\u DS15\u v2
Standard_DS1
标准\u DS2
…
Standard_DS14
Standard\u GS1
Standard\u GS2
…
Standard_GS5
现在我有了以下正则表达式:
private const string PremiumStorageRoleSizesRegex = @"^Standard_((DS)|(GS))\d+$";
machineSizeMetadatas = machineSizeMetadatas.Where(metadata => Regex.IsMatch(metadata.Name, PremiumStorageRoleSizesRegex));
但是我不知道如何处理第一个序列(Standard\u DS1\u v2
)
如何更改正则表达式?您可以将此正则表达式与可选组一起使用:
^Standard_(DS|GS)\d+(?:_v\d+)?$
^^^^^^^^^^
或更简单的^标准\udG]S\d+(?:\u v\d+)$
,以避免组的交替。见
您可以在任何需要的地方添加捕获组
图案细节:
-字符串的开头^
-文本Standard\uu
子字符串Standard\u
-一个(DS | GS)
或DS
字符串(您可以将其替换为GS
)[DG]S
-1个或多个数字\d+
-1或0(=可选)的(?:_v\d+)
+
+`1或更多数字序列v
-字符串结束$