我的测试数据
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
非常感谢任何建议或协助。
答案 0 :(得分:1)
您将这些单词包含在正则表达式中,因此它们将位于提取的字符串中。尝试
string datePattern = @"{\w+}\s+{\d{1,2}-{\w+}-{\d{4,}";
答案 1 :(得分:1)
你也可以循环思考匹配的组。
var groups = Regex.Match(values[(int)HomeColumnNames.VenueCrowdDate], datePattern).Groups;
Console.WriteLine(groups[1].Value); //Fri 14-Mar-2003
答案 2 :(得分: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的模式对其他样本更好。
答案 3 :(得分:0)
您将返回比赛,而不是您的捕获组。
以下代码将允许您明确命名(并随后引用)捕获。没有必要明确地命名或编号你的小组......但这是一个很好的做法。
String groupName = "yourGroupName";
Regex r = new Regex(@"Date:(?<" + groupName + ">.*?) Venue");
Matches m = r.Match(yourTestData);
Console.WriteLine(m.Groups[groupName]);