VB.NET从字符串中提取日期的实现方法求助
提取字符串中日期的可行方案
嘿,我来给你分享个靠谱的解决方案,用Python的正则表达式就能轻松搞定这三种不同格式的日期提取~
思路说明
你遇到的这三个日期格式各不相同:有完整月份名+日期+逗号+年份的长格式,有数字日期+月份缩写+两位年份的短格式,还有点分隔的MM.DD.YYYY格式。我们可以写一个能覆盖这三种情况的正则表达式,一次性从字符串里把日期精准揪出来。
代码实现(Python)
import re # 待处理的字符串列表 texts = [ "This is a date, January 23, 2016 Stackoverflow!", "this 27 Aug 16 is in date format.", "03.22.2017 is also a date." ] # 匹配三种日期格式的正则表达式 date_pattern = r'(?:(?:January|February|March|April|May|June|July|August|September|October|November|December) \d{1,2}, \d{4})|(?:\d{1,2} (?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{2})|(?:\d{2}\.\d{2}\.\d{4})' # 逐个提取日期 extracted_dates = [] for text in texts: matched_dates = re.findall(date_pattern, text) if matched_dates: extracted_dates.extend(matched_dates) # 打印结果 for date in extracted_dates: print(date)
运行结果
执行上面的代码后,会输出你期望的内容:
- January 23, 2016
- 27 Aug 16
- 03.22.2017
正则规则拆解
我把正则拆成了三部分,分别对应三种日期格式:
- 第一部分:
(?:January|...|December) \d{1,2}, \d{4}用来匹配像January 23, 2016这种完整月份的格式 - 第二部分:
\d{1,2} (?:Jan|...|Dec) \d{2}专门匹配27 Aug 16这种月份缩写的短格式 - 第三部分:
\d{2}\.\d{2}\.\d{4}负责捕获03.22.2017这种点分隔的数字日期
这样不管是哪种格式,都能准确提取出来啦~
内容的提问来源于stack exchange,提问作者Paul Jaycee Salvador
相关产品推荐
相关产品推荐

