使用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
如有任何建议或帮助,我将不胜感激。

使用c#正则表达式,获取两个字符串之间的值

您的正则表达式是好的。你只需要得到第一组。

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