这是我用来查找 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****
对于我的一生,我无法弄清楚正则表达式有什么问题。任何建议表示赞赏。
问候。
编辑:编辑内部匹配以允许带前导零的数字仍包含零。