我遇到了一個正則表達式匹配特定情況的麻煩。我有電視的列表顯示了在約4格式:正則表達式,以確保組匹配不以特定字符結尾
- Name.Of.Show.S01E01
- Name.Of.Show.0101
- Name.Of.Show.01x01
- 名稱。 Of.Show.101
我想匹配的是顯示名稱。我的主要問題是,我的正則表達式匹配節目的名稱與前面的'。'。我正則表達式如下:
"^([0-9a-zA-Z\.]+)(S[0-9]{2}E[0-9]{2}|[0-9]{4}|[0-9]{2}x[0-9]{2}|[0-9]{3})"
一些例子:
>>> import re
>>> SHOW_INFO = re.compile("^([0-9a-zA-Z\.]+)(S[0-9]{2}E[0-9]{2}|[0-9]{4}|[0-9]{2}x[0-9]{2}|[0-9]{3})")
>>> match = SHOW_INFO.match("Name.Of.Show.S01E01")
>>> match.groups()
('Name.Of.Show.', 'S01E01')
>>> match = SHOW_INFO.match("Name.Of.Show.0101")
>>> match.groups()
('Name.Of.Show.0', '101')
>>> match = SHOW_INFO.match("Name.Of.Show.01x01")
>>> match.groups()
('Name.Of.Show.', '01x01')
>>> match = SHOW_INFO.match("Name.Of.Show.101")
>>> match.groups()
('Name.Of.Show.', '101')
所以,問題是我該如何避免與期結束第一組?我意識到我可以簡單地做到:
var.strip(".")
但是,這並不處理「Name.Of.Show.0101」的情況。有沒有辦法改進正則表達式來更好地處理這種情況?
在此先感謝。
謝謝,它甚至從未將我的想法包括在內。在兩組之外。我沒有顯示整個字符串,在劇集#之後通常還有其他一些項目,比如「The.Name.Of.Show.S01E01.something.else」,所以rpartition不起作用。 – 2010-05-19 18:11:24
@AJ:那麼你應該小心,不要將'$'包含到正則表達式中 – SilentGhost 2010-05-19 18:13:09