C# 我需要从高速公路号码中提取前缀、号码和选项后缀

C# 我需要从高速公路号码中提取前缀、号码和选项后缀,c#,regex,C#,Regex,我正在用C#编写一个程序,以通用形式处理公路指定: {1-2个字符}{1-3个数字}[1-4个字符] 例如: I70 I70BR 美国550 美国550TRK 正则表达式可以是什么来匹配此输入,并将前缀(例如,I或US)、数字(例如,70或550)和可选后缀(例如,BR或Trk)存储在匹配数组中 问候,, Jim您需要的图案如下: ^([A-Za-z]{1,2})(\d{1,3})([A-Za-z]{0,4})$ 您说过最后一组字符在1到4个字符之间,但是您在同一个问题中表示它是可选的。我

我正在用C#编写一个程序,以通用形式处理公路指定:

{1-2个字符}{1-3个数字}[1-4个字符]

例如:

  • I70
  • I70BR
  • 美国550
  • 美国550TRK
正则表达式可以是什么来匹配此输入,并将前缀(例如,I或US)、数字(例如,70或550)和可选后缀(例如,BR或Trk)存储在匹配数组中

问候,,
Jim

您需要的图案如下:

^([A-Za-z]{1,2})(\d{1,3})([A-Za-z]{0,4})$
您说过最后一组字符在1到4个字符之间,但是您在同一个问题中表示它是可选的。我选择了后一个选项,因为不是所有您提供的输入都有后缀

示例用法:

var input = "US550Trk";
var pattern = @"^([A-Za-z]{1,2})(\d{1,3})([A-Za-z]{0,4})$";
var regex = new Regex(pattern);
var results = regex.Match(input).Groups.
    OfType<Group>().
    Skip(1).
    Select(g => g.Value).
    ToArray();
var input=“US550Trk”;
var模式=@“^([A-Za-z]{1,2})(\d{1,3})([A-Za-z]{0,4})$”;
var regex=新的regex(模式);
var results=regex.Match(input.Groups)。
OfType()。
跳过(1)。
选择(g=>g.Value)。
ToArray();

Skip(1)
之所以存在,是因为第一组始终包含整个匹配项。

这是非常基本的内容-您真的能不只是阅读文档吗?