2012-09-28 80 views
-3
regex=re.compile(r"pattern_A(\d+)|pattern_B:(\d+)") 
result=re.search(regex,string); 

我有字符串「pattern_A9123213」和「pattern_B490329402」,以及「不匹配的字符串」
結果將是[(「9123213」,「」)] ,[( '', '490329402')]或[( '', '')] 我怎樣才能像只有一個元素[ '9123213'],[ '490329402']和[ '']。 謝謝!正則表達式「或」返回只有一個匹配

+5

向我們展示您嘗試過的。 –

+5

這有點不清楚。正則表達式不返回列表...你的意思是're.findall'? – mgilson

+0

@mgilson true,但即使findall也不返回列表中的空字符串。 – aschmid00

回答

0

re.compile不返回一個列表。它返回一個已編譯的正則表達式,其方法可用於對字符串進行操作。

1

最簡單的方法是使用r"(pattern_A|pattern_B:)(\d+)"作爲您的正則表達式,然後抓住第二個匹配組(re.search(regex,string).group(2))。這是有效的,因爲您試圖抓取的組在兩側都是相同的模式(\d+)。一般來說,你必須使用多個正則表達式來處理這種情況。

+0

謝謝。你幫了我。 –

+0

@ShirleyCia如果Keith幫助你,請選擇這個答案作爲答案。 – tzot

相關問題