一般的な形式で高速道路の指定を処理するプログラムを 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)
グループには常に一致全体が含まれているため、そこにあります。