[英]Regex trouble: how to get everything between the last two forward slashes
[英]How regex get last element's time between a sentence
例如
我想得到下面的句子最后同意时间,如图片。
输入:
Agree|AAA Agree 7/28 22:34,Agree|BBBB Agree 7/28 23:20,Agree|CCC Agree 7/29 07:41,Agree|JJJ Agree 7/29 07:45,Agree|DDD Agree 7/29 07:54,forward|EEE forward 7/29 07:54,forward|FFF forward 7/29 07:54,forward|GGG forward 7/29 07:54,forward|HHHH forward 7/29 07:54
预期 output:
7/29 07:54
我试过使用 LINQ 但我只能像图片那样做。
void Main()
{
var input = "Agree|AAA Agree 7/28 22:34,Agree|BBBB Agree 7/28 23:20,Agree|CCC Agree 7/29 07:41,Agree|JJJ Agree 7/29 07:45,Agree|DDD Agree 7/29 07:54,forward|EEE forward 7/29 07:54,forward|FFF forward 7/29 07:54,forward|GGG forward 7/29 07:54,forward|HHHH forward 7/29 07:54";
var output = input.Split('|')
.Where(_ => _.Contains("Agree")).Select((e, index) => new {e,index})
.OrderByDescending(_=>_.index)
.Take(1);
}
这个正则表达式可以解决问题
Agree (\d{1,2}\/\d{1,2} \d{1,2}:\d{1,2})(?!.*Agree \d{1,2}\/\d{1,2} \d{1,2}:\d{1,2})
这意味着Agree \d{1,2}\/\d{1,2} \d{1,2}:\d{1,2}
后面没有出现任何Agree \d{1,2}\/\d{1,2} \d{1,2}:\d{1,2}
然后你会这样做以将7/29 07:54
提取到lastAgree
变量中
string pattern = @"Agree (\d{1,2}\/\d{1,2} \d{1,2}:\d{1,2})(?!.*Agree \d{1,2}\/\d{1,2} \d{1,2}:\d{1,2})";
// Get your match using pattern
var match = Regex.Match(text, pattern);
// Groups[1] is (\d{1,2}\/\d{1,2} \d{1,2}:\d{1,2})
var lastAgree = match.Groups[1].Value;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.