0

我的测试数据

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

任何建议或帮助将不胜感激。

4

4 回答 4

1

您将单词包含在您的正则表达式中,因此它们将位于提取的字符串中。尝试

string datePattern = @"{\w+}\s+{\d{1,2}-{\w+}-{\d{4,}";
于 2013-04-04T09:27:00.713 回答
1

您还可以循环考虑匹配的组。

var groups = Regex.Match(values[(int)HomeColumnNames.VenueCrowdDate], datePattern).Groups;
Console.WriteLine(groups[1].Value); //Fri 14-Mar-2003
于 2013-04-04T09:30:24.530 回答
1

你的正则表达式没问题。只是你需要得到第一组。

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 的模式对其他样本更好。

于 2013-04-04T09:32:10.430 回答
0

您要返回比赛,而不是您的捕获组。

以下代码将允许您明确命名(并随后引用)您的捕获。没有必要明确命名或编号您的组......但这是一种很好的做法。

String groupName = "yourGroupName";
Regex r = new Regex(@"Date:(?<" + groupName + ">.*?) Venue");
Matches m = r.Match(yourTestData);
Console.WriteLine(m.Groups[groupName]);
于 2013-04-04T09:30:58.383 回答