我需要更改我的正则表达式,以便能够提取日期而无需任何文本。目前,正则表达式提取日期和时间,但前提是日期和时间是紧随其后的。如果它们之间有文本,则代码与该文本匹配。
我的正则表达式:
( nodeComplete && count ){
#print $0
#print count;
for (i = 0; i < count; i++) {print array1[i];};
nodeComplete=0;
count=0;
}
该句子应该看起来像这样:
string pattern = @"(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]|(?:Jan|Mar|May|Jul|Aug|Oct|Dec)))\1|(?:(?:1|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2]|(?:Jan|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec))\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})|(?:29(\/|-|\.)(?:0?2|(?:Feb))\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))|(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9]|(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep))|(?:1[0-2]|(?:Oct|Nov|Dec)))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})(?:[\D]*)(?<time>\d{1,2}\:\d{2}\s(?:A|P)M)";
正则表达式应匹配:
1)Hello, meet me 5/1/2019 at 6:32 PM and then 5/2/2019 7:32 PM bye.
2)5/1/2019
3)6:32 PM
4)5/2/2019
当前,输出结果如下:
7:32 PM
通知:
在5/1/2019到6:32之间的 at 已被接受,不应接受。
请让任何答案都与我的正则表达式有关,因为这是使用它的必要条件。
答案 0 :(得分:0)
这是我的第一个C#程序,不要残酷:
using System;
using System.Text.RegularExpressions;
namespace myApp
{
class Program
{
static void Main(string[] args)
{
string input = "Hello, meet me 5/1/2019 at 6:32 PM and then 5/2/2019 7:32 PM bye.";
Regex word = new Regex(@"(([0-9]{1,2}:[0-9]{1,2}\s[A-Z]{2})|([0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}))");
MatchCollection mc = word.Matches(input);
foreach (Match m in mc)
{
Console.WriteLine(m);
}
}
}
}
输出:
5/1/2019
6:32 PM
5/2/2019
7:32 PM