使用c#正则表达式,获取两个字符串之间的值
本文关键字:两个 字符串 之间 正则表达式 获取 使用 | 更新日期: 2023-09-27 18:07:25
我的测试数据
Date:Fri 14-Mar-2003 Venue:S.F.S. Crowd:24,172
我感兴趣的数据
Fri 14-Mar-2003
我当前拥有的代码
string datePattern = "Date:(.*?) Venue";
string tempDate = Regex.Match(values[(int)HomeColumnNames.VenueCrowdDate], datePattern).Value;
返回的数据
Date:Fri 14-Mar-2003 Venue
如有任何建议或帮助,我将不胜感激。
您的正则表达式是好的。你只需要得到第一组。
var match= Regex.Match(values[(int)HomeColumnNames.VenueCrowdDate], datePattern);
match.Groups[0]; //returns full match
match.Groups[1]; //returns 1st group
//Gets MatchCollection
var matches= Regex.Matches(values[ManyAddresses, datePattern);
使用@bash 。D的图案更适合其他样品
您还可以循环考虑匹配的组。
var groups = Regex.Match(values[(int)HomeColumnNames.VenueCrowdDate], datePattern).Groups;
Console.WriteLine(groups[1].Value); //Fri 14-Mar-2003
您正在将单词包含到regex中,因此它们将在提取的字符串中。试着
string datePattern = @"{'w+}'s+{'d{1,2}-{'w+}-{'d{4,}";
您返回的是匹配项,而不是捕获组。
下面的代码将允许您显式地命名(并随后引用)您的捕获。没有必要明确地命名或编号你的组…但这是很好的练习。String groupName = "yourGroupName";
Regex r = new Regex(@"Date:(?<" + groupName + ">.*?) Venue");
Matches m = r.Match(yourTestData);
Console.WriteLine(m.Groups[groupName]);