使用C#regex,获取两个字符串之间的值

时间:2013-04-04 09:22:45

标签: c# regex

我的测试数据

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 个答案:

答案 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]);