首页 > 解决方案 > 如果只有第一组匹配,如何匹配第二组

问题描述

如果只有第一组匹配,我正在尝试为匹配第二组的 python 脚本编写正则表达式。

如果文本如下所示,我正在尝试获取日期:

Cancel Date: 08/09/19
Cancellation Date: 08/05/19

如果文本不是上面提到的,它不应该抓住日期。例如截止日期:12/34/12 不应匹配或抢占日期。

当前的正则表达式解决方案:

(Cancel Date:|Cancellation Date:)[\s\n\r\t]*(\d{1,2}/\d{1,2}/\d{2})

我正在使用 regex.search().group(2) 来获取信息,但似乎在需要日期的地方不断收到无类型属性错误。任何帮助或替代解决方案表示赞赏。我正在使用 xml 格式的配置文件中捕获正则表达式。

标签: pythonregexpython-datetime

解决方案


这似乎对我有用。您是否正确地转义了您的正则表达式模式,或者将其设为原始字符串?

import re as regex

strings = [
    "Cancel Date: 08/09/19",
    "Cancellation Date: 08/05/19",
    "Due date: 12/34/12"
]

pattern = "Cancel(lation)? Date:[\s]*(\\d{1,2}/\\d{1,2}/\\d{2})"

for string in strings:
    match = regex.match(pattern, string)
    if match is None:
        print("No Match")
    else:
        print(match.group(2))

输出:

08/09/19
08/05/19
No Match

推荐阅读