使用python

时间:2017-10-03 09:54:18

标签: python regex

我有以下文字

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”这包括如何更改正则表达式。

请帮助。

1 个答案:

答案 0 :(得分:1)

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

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

请参阅regex demo

如果在匹配的第一个数字之前有\b,则(?<!\.)将与字边界匹配,并且.否定反馈将使匹配失败。

请参阅Python demo

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