匹配日期的模式,后跟字符串
本文关键字:字符串 模式 日期 | 更新日期: 2024-11-07 20:29:22
>我有一个字符串,带有表单的重复模式
MM/DD/YYYY (FirstName LastName) Status Update: blah blah blah blah
例如
string test = "11/01/2011 (Joe Bob) Status Update: Joe is the collest guy on earfth 08/07/2010 (Rach Mcadam) Status Update: whatever I dont care 06/28/2009 (Some Guy) Status Update: More junk and note how I end there's not gonna be another date after me"
如何对此进行分组,以便为每个匹配项更新日期、名称和状态?
我试过了
string datePattern = "''d{1,2}/''d{1,2}/''d{0,4}";
string personPattern = "''(''w*'')";
Regex regex = new Regex("(" + datePattern + ") (" + personPattern + ") (.*)");
MatchCollection matches = regex.Matches(test);
foreach (Match match in matches)
{
Console.WriteLine("##Match Found##");
Console.WriteLine("");
Console.WriteLine("");
Console.WriteLine(match.Groups[0]);//full text
Console.WriteLine("");
Console.WriteLine(match.Groups[1]);//date only
Console.WriteLine("");
Console.WriteLine(match.Groups[2]);//person
Console.WriteLine("");
Console.WriteLine(match.Groups[3]);//note
}
在这一点上,它什么也没拉回来。
空格不包含在
'w
中,因此'w*
与Joe Bob
不匹配。 尝试将personPattern
更改为 "''([ ''w]*'')"
。
看起来你的正则表达式也太贪婪了,因为末尾的.*
将与字符串的其余部分匹配,而不是在下一个日期停止。 尝试将正则表达式更改为以下内容:
Regex regex = new Regex("(" + datePattern + ") (" + personPattern + ") (.*?(?=$|" + datePattern + "))");