使用C#regex,在两个字符串之间获取一个值
我的测试数据使用C#regex,在两个字符串之间获取一个值,c#,regex,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-
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
任何建议或帮助都将不胜感激 您正在将单词包含到正则表达式中,因此它们将在提取的字符串中。试一试
string datePattern = @"{\w+}\s+{\d{1,2}-{\w+}-{\d{4,}";
您正在将单词包含到正则表达式中,因此它们将在提取的字符串中。试一试
string datePattern = @"{\w+}\s+{\d{1,2}-{\w+}-{\d{4,}";
您还可以循环匹配的组
var groups = Regex.Match(values[(int)HomeColumnNames.VenueCrowdDate], datePattern).Groups;
Console.WriteLine(groups[1].Value); //Fri 14-Mar-2003
您还可以循环匹配的组
var groups = Regex.Match(values[(int)HomeColumnNames.VenueCrowdDate], datePattern).Groups;
Console.WriteLine(groups[1].Value); //Fri 14-Mar-2003
你是在返回比赛,不是你的捕获小组 下面的代码将允许您显式命名(并随后引用)捕获。没有必要显式命名或编号您的组。。。但这是很好的做法
String groupName = "yourGroupName";
Regex r = new Regex(@"Date:(?<" + groupName + ">.*?) Venue");
Matches m = r.Match(yourTestData);
Console.WriteLine(m.Groups[groupName]);
String groupName=“yourGroupName”;
正则表达式r=新正则表达式(@“日期:(?*)地点”);
匹配m=r.Match(yourTestData);
Console.WriteLine(m.Groups[groupName]);
您返回的是匹配项,而不是您的捕获组
下面的代码将允许您显式命名(并随后引用)捕获。没有必要显式命名或编号您的组。。。但这是很好的做法
String groupName = "yourGroupName";
Regex r = new Regex(@"Date:(?<" + groupName + ">.*?) Venue");
Matches m = r.Match(yourTestData);
Console.WriteLine(m.Groups[groupName]);
String groupName=“yourGroupName”;
正则表达式r=新正则表达式(@“日期:(?*)地点”);
匹配m=r.Match(yourTestData);
Console.WriteLine(m.Groups[groupName]);
您的正则表达式正常。你只需要进入第一组
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 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的模式更好。对于java组,从索引1开始,但是对于c,我认为它是0。@DavutGürbüz,我也不确定。正是这种不确定性,这就是我建议显式组命名的原因:-)数组索引从0开始,我确信并且已经测试过codeindex从0开始,但是0索引给我们匹配的文本而不是组。因此,组1适用于java和c+1对于java组,从索引1开始,但对于c,我认为是0。@DavutGürbüz,我也不确定。正是这种不确定性,这就是我建议显式组命名的原因:-)数组索引从0开始,我确信并且已经测试过codeindex从0开始,但是0索引给我们匹配的文本而不是组。因此,组1适用于java和c+1是的,我的谷歌技能似乎让我失望。是的,我的谷歌技能似乎让我失望。我提供了你的技能,但我认为
@
(文字)字符应该在“
但它不匹配。你确定它有效吗?不,你是对的!这是在匆忙的时刻。。。感谢您的澄清我提供了您的澄清,但我认为@
(文字)字符应该在“
之前,并且不匹配。您确定它有效吗?不,您是对的!这是在匆忙中…感谢您的澄清