我想分析其可能包含混合的模式,比如正则表达式匹配的时间跨度
1-4pm
1pm-5pm
noon to 11pm
noon to midnight
etc.
我想提取开始和结束时间的数据。我如何通过正则表达式来实现这一点。我知道我无法支持所有可能的输入格式,但我怎样才能实现最大限度的支持?
这是我的表达 ^(([AZ] +)?)\ S *([0-9] {1,2} [:] [0-9] {0 ((?[az] +)?| 2} \ s * [am | pm | am | pm] [。])?\ s * [ - | to | \ |/| =] \ s (?[0-9] {1,2} [:]?[0-9] {0,2} \ s * [am | pm | am | pm] [。]))?$
它涵盖了几乎所有的组合。我只想知道在这个正则表达式中是否有任何优化。 在这里,dayPart将消耗所有开始的非数字字符来处理TimeSpan是以中午,午夜等开始,还是像周日我们可以忽略的任何值。 startTime会尝试以任何格式消耗任何时间,如果它在那里。 endPart和EndTime也一样。
你不应该逃避分隔符表达式中的破折号,这是不必要的。 +1的方法。 – Tomalak 2009-08-05 13:27:46
严格来说,这是没有必要的。这是我习惯了的习惯,因为你必须在一个范围内特别对待“ - ”。我倾向于在任何地方自动保护它。 –
2009-08-05 13:41:44