您好,有人帮我解决了一个问题,我希望将这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
答案 0 :(得分:0)
你可以尝试
(?<reportName>[a-zA-Z0-9]+)(?:_[0-9]+)*(?:_v(?<reportVersion>\d+))?\.tsd
请参阅demo
您需要转义.
,因为您要匹配文字.
。如果你没有逃避它,正则表达式中的.
匹配任何字符(但这里是换行符)。
答案 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
是您的正则表达式演示