2015-10-09 32 views
-3

鑑於這一行:字符串檢查:固定和可變部分

[4] Item status: FAILED 

我想用最高效和維護的方法(可能使用正則表達式),以檢查此行是「正確的」。在這裏,正確性意味着

  1. 方括號,文字"Item status: "總是在那裏
  2. 一個數字是在方括號:
  3. 狀態報告可能是["PASSED", "FAILED", "NOT EXECUTED"]

我之間m尋找一種方式來注入一個變量到一個正則表達式,以考慮點3.

回答

3

Rather比「注入變量」,我想你想使用|(「或」)選項:

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)  

演示:https://regex101.com/r/gQ6pW4/2

如果該列表是可變的,你可以使用str.format來將'|'.join(options)插入相應的組。

+1

可能會在最後添加一個'「$」',以便在狀態(以及狀態不能成爲,例如「PASSED NOT」或其他)之後沒有其他東西可以出現。 –

+0

@tobias_k好點,謝謝;添加 – jonrsharpe

相關問題