我在Modify regex to match dates with ordinals "st", "nd", "rd", "th"看到了问题的答案 但我需要它采用Perl格式。
这也只是解析2004年1月1日。我需要一个可以解析2004年1月1日,2004年1月1日或2004年1月1日的正则表达式。我对正则表达式很新,所以不知道如何得到它。
这仅适用于英语日期,需要在1月/ 1月。
任何信息都会有所帮助。
谢谢
答案 0 :(得分:0)
这个怎么样:
my @strs = ('1 jan 2004','1st Jan 2004','1st of Jan 2004');
for(@strs)
{
if(m/^\s*(\d+)(?:[a-z]{2})?\s+(?:of\s+)?([a-z]{3})\s+(\d{4})/i)
{
my($date,$month,$year) = ($1,$2,$3);
print "matched $date $month $year\n";
}
}
这不会验证字符串是否为有效日期(即1月43日),但检查可以 添加$ date,$ month,$ year变量。