我需要从高速公路号码中提取前缀,数字和选项后缀

时间:2013-01-07 04:11:16

标签: c# regex

我正在用C#编写一个以一般形式处理高速公路指定的程序:

{1-2 chars} {1-3 digits} [1-4 chars]

例如:

  • I70
  • I70BR
  • US550
  • US550Trk

可能是正则表达式匹配此输入并存储前缀(例如,I或US),数字(例如,70或550)和可选后缀(例如,BR或Trk)在一系列比赛中。

此致 吉姆

1 个答案:

答案 0 :(得分:2)

您需要的模式如下:

^([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();

Skip(1)就在那里,因为第一组总是包含整个匹配。

相关问题