【问题标题】:parsing date using regular expression in python在python中使用正则表达式解析日期
【发布时间】:2018-03-14 11:41:09
【问题描述】:

我有以下文字

txt = 'Lithium 0.25 (7/11/77).  LFTS wnl.  Urine tox neg.  Serum tox + fluoxetine 500; otherwise neg.  TSH 3.28.  BUN/Cr: 16/0.83.  Lipids unremarkable.  B12 363, Folate >20.  CBC: 4.9/36/308 Pertinent Medical Review of Systems Constitutional:'

我想在上面的表达式中得到日期,我写了下面的表达式。

re.findall(r'(?:[\d{1,2}]+)(?:[/-]\d{0,}[/-]\d{2,4})', txt)

如果我执行上面的表达式,则会显示以下输出

['7/11/77', '9/36/308']

我不希望包含“4.9/36/308”这个我必须如何更改这个正则表达式。

请帮忙。

【问题讨论】:

  • 我不了解你,但7/11/77 也不是约会对象。
  • 7/11/77 我认为是一个日期,因为根据我的要求,如果最后一个数字是两位数,则在它之前附加 19 来表示一年。谢谢我忘了提到问题
  • @cᴏʟᴅsᴘᴇᴇᴅ 也许我错过了什么,但为什么不呢?

标签: python regex


【解决方案1】:

您可以将当前的正则表达式修复为

\b(?<!\.)\d{1,2}[/-]\d+[/-]\d{2,4}\b

regex demo

\b 将匹配单词边界,如果在匹配的第一个数字之前有 .,则 (?&lt;!\.) 否定查找将失败匹配。

请参阅Python demo

请注意,如果您只需要获取有效日期列表,则以后必须使用non-regex method

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多