我正在用C#编写一个以一般形式处理高速公路指定的程序:
{1-2 chars} {1-3 digits} [1-4 chars]
例如:
可能是正则表达式匹配此输入并存储前缀(例如,I或US),数字(例如,70或550)和可选后缀(例如,BR或Trk)在一系列比赛中。
此致 吉姆
答案 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)
就在那里,因为第一组总是包含整个匹配。