RB \ d {4}、SW \ d {4}、S \d{4}の形式の乗換番号を検索するために使用しているコードは次のとおりです。
Regex transitRegex = new Regex("^(RB|SW?)(<?transit>\\d{4}).*");
Match m1 = transitRegex.Match(transitNumber);
if (m1.Success)
{
Regex transitRegexNoZeroes = new Regex("0+(<?transitNoZeroes>\\d+)");
Match m2 = transitRegexNoZeroes.Match(m1.Groups["transit"].Value);
if (m2.Success)
{
transitNumber = m2.Groups["transitNoZeroes"].Value.ToString();
MessageBox.Show(transitNumber, "Transit Number", MessageBoxButtons.OK);
}
else
{
transitNumber = m1.Groups["transit"].Value.ToString();
}
}
else
{
MessageBox.Show("Could not find transit number in " + transitNumber, "Parsing Error", MessageBoxButtons.OK);
}
しかし、私はどの行にも一致していません。失敗する行の例を次に示します。
RB80720C1XX - Intermittent COMM lOSS ****CHRONIC****
私の人生では、正規表現の何が問題になっているのか理解できません。アドバイスをいただければ幸いです。
よろしく。
編集:先行ゼロのある数値が引き続きゼロを含むことができるように編集された内部一致。