我正在用 C# 编写一个程序,以一般形式处理高速公路指定:
{1-2 个字符}{1-3 个数字}[1-4 个字符]
例如:
- I70
- I70BR
- US550
- US550Trk
匹配此输入并将前缀(例如,I 或 US)、数字(例如,70 或 550)和可选后缀(例如,BR 或 Trk)存储在数组中的正则表达式可能是什么?的比赛。
问候,吉姆
您需要的模式如下:
^([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)
存在,是因为第一组始终包含整个匹配项。