【问题标题】:Passing regex pattern as an system argument to Python script [duplicate]将正则表达式模式作为系统参数传递给 Python 脚本 [重复]
【发布时间】:2018-03-13 09:11:13
【问题描述】:

我有一个接受正则表达式模式的 Python 脚本,它执行如下操作:

import sys
import re

pattern = re.compile(sys.argv[1])
time_string = '2017-08-14 11:07:46'

def func(pattern):
    if re.search(pattern, time_string):
        # do something

但是当我运行python script.py \d{4}\-\d{2}\-\d{2}\s\d{2}:\d{2}:\d{2} 时,函数中的条件总是以假结束。我被这个问题困扰了好几天,我需要帮助。提前致谢。

【问题讨论】:

    标签: python regex python-2.7


    【解决方案1】:

    您忘记转义 '\' 字符,它们对于 bash 来说是特殊的:

    python script.py \\d{4}\-\\d{2}\-\\d{2}\\s\\d{2}:\\d{2}:\\d{2}
    

    或者正如评论所暗示的,将整个字符串放在单引号中,然后 '\' 将被逐字处理:

    python script.py '\d{4}\-\d{2}\-\d{2}\s\d{2}:\d{2}:\d{2}'
    

    【讨论】:

    • 或者,只需python script.py '\d{4}\-\d{2}\-\d{2}\s\d{2}:\d{2}:\d{2}'
    • @SergiyKolesnikov 好点,已更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-10
    • 2013-03-28
    • 1970-01-01
    • 2021-12-31
    • 2015-10-12
    相关资源
    最近更新 更多