Python 字符串检查:固定和可变部分

Python 字符串检查:固定和可变部分,python,regex,python-2.7,python-3.x,Python,Regex,Python 2.7,Python 3.x,鉴于这一点: [4] Item status: FAILED 我想使用最有效和可维护的方法(可能是正则表达式)来检查这一行是否“正确”。在这里,正确性意味着 方括号和文本“项目状态:始终存在 一个数字在方括号之间 在之后报告的状态:可能位于[“通过”、“失败”、“未执行”] 我正在寻找一种将变量以某种方式注入正则表达式的方法,以解释第3点。我想您应该使用(“or”)选项,而不是“注入变量”: 演示: 如果列表可以是可变的,您可以使用str.format将'|'.join(options)插入到

鉴于这一点:

[4] Item status: FAILED
我想使用最有效和可维护的方法(可能是正则表达式)来检查这一行是否“正确”。在这里,正确性意味着

  • 方括号和文本
    “项目状态:
    始终存在
  • 一个数字在方括号之间
  • 之后报告的状态:
    可能位于
    [“通过”、“失败”、“未执行”]
  • 我正在寻找一种将变量以某种方式注入正则表达式的方法,以解释第3点。

    我想您应该使用
    (“or”)选项,而不是“注入变量”:

    演示:

    如果列表可以是可变的,您可以使用
    str.format
    '|'.join(options)
    插入到相应的组中。

    可以在末尾添加一个
    “$”
    ,这样状态之后就不会出现任何其他内容(并且状态不能是,例如“未通过”或其他内容)。
    regex = re.compile(r"""
        \[\d+\]\s+                      # a number in square brackets
        Item\ status:\s+                # followed by Item status:
        (?:FAILED|PASSED|NOT EXECUTED)  # then one of these three options
        $                               # and nothing further
    """, re.VERBOSE)