我有一个字符串,其中包含具有很多格式可能性的日期。我的正则表达式匹配它变得荒谬而漫长。我希望学习更简洁的表达方式。这里有各种格式。我想获得每个日期作为自己的比赛:用于Google Calendar API日期输出的正则表达式
Sat Jul 16, 2011
Sat Jul 16, 2011 6pm to 8pm
Sat Jul 16, 2011 6pm to 8:30pm
Sat Jul 16, 2011 6:30pm to 8pm
Sat Jul 16, 2011 6:30pm to 8:30pm
Sat Jul 16, 2011 to Sun Jul 17, 2011
Sat Jul 16, 2011 6pm to Sun Jul 17, 2011 8pm
Sat Jul 16, 2011 6:30pm to Sun Jul 17, 2011 8pm
Sat Jul 16, 2011 6pm to Sun Jul 17, 2011 8:30pm
Sat Jul 16, 2011 6:30pm to Sun Jul 17, 2011 8:30pm
我来这里之前要问,我已经到了这一点:
([A-Z]{1}[a-z]{2} [A-Z]{1}[a-z]{2} [0-9]{1,2}, [0-4]{4} [0-9]{1,2}[ap]{1}m)(to ([A-Z]{1}[a-z]{2} [A-Z]{1}[a-z]{2} [0-9]{1,2}, [0-4]{4} [0-9]{1,2}[ap]{1}m))?
这将返回的第一次约会,和第二个如果存在,但仅限于此格式:Sat Jul 16, 2011 6pm to Sun Jul 17, 2011 8pm
。这太荒唐了。
编辑:
Someone suggested我检查的日期“到”部分,并在每边运行正则表达式,而不是试图在一次占所有案件。仍然在为它的每一面寻找更简洁的解决方案,但这会有很大帮助。
那么我首先会摆脱所有的{1},但就是这样。其实如果你想验证日期,你的正则表达式会更长。重新验证验证永远不会很漂亮。对于这个建议,最简单的方法是编写一个匹配'm到[AZ]'和'm $'的if语句正则表达式,如果存在的话使用2日期匹配器,如果你不能匹配使用1侧匹配器。 – NorthGuard