正则表达式解决方案可选

时间:2015-07-13 07:31:43

标签: c# regex

您好,有人帮我解决了一个问题,我希望将这3个正则表达式行修改为单个正则表达式行。 使用C#regex

(?<reportName>\w+)(_[0-9])_v(?<reportVersion>\d+).tsd for === FBN001_v7.tsd
(?<reportName>\w+)_v(?<reportVersion>\d+).tsd for === FBN014B_2_v4.tsd
(?<reportName>\w+).tsd === for FBN002A.tsd

2 个答案:

答案 0 :(得分:0)

你可以尝试

(?<reportName>[a-zA-Z0-9]+)(?:_[0-9]+)*(?:_v(?<reportVersion>\d+))?\.tsd

请参阅demo

您需要转义.,因为您要匹配文字.。如果你没有逃避它,正则表达式中的.匹配任何字符(但这里是换行符)。

enter image description here

答案 1 :(得分:0)

string txt = @"for === FBN001_v7.tsd
=== for FBN002A.tsd
for === FBN014B_2_v4.tsd";
string patten = @"(?<reportName>\w+?)((_[0-9])?_v(?<reportVersion>\d+))?\.tsd";
foreach (Match match in Regex.Matches(txt, patten))
{
    Console.Write("reportName:" + match.Groups["reportName"].Value + "  ");
    if (match.Groups["reportVersion"].Success)
    {
        Console.WriteLine("reportVersion:" + match.Groups["reportVersion"].Value);
    }
    Console.WriteLine();
    Console.WriteLine("------------------------");
}

我认为for === FBN001_v7.tsd是您的正则表达式演示