看板 Python 關於我們 聯絡資訊
※ 引述《eaden (evenrain)》之銘言: : 問題是這樣的,我有一堆字串以及多個正規表示式, : 我希望可以透過簡單的方式知道哪個字串符合哪個正規表示式, : 且正規表示式間是有優先順序的, : 我目前想到的解法是這樣 (兩個網址是一樣的 code XD) : http://pastie.org/7999821 : http://chopapp.com/#ksu6oyv4 : 結果會是 : aabbccdd is level 4 : aaabccdd is level 3 : bbccaaaaa is level 1 : bbccddee is not match : 12345678 is not match : 不過一來這樣做表示式的順序很重要,二來是程式看起來不太直覺... : 不知道有沒有比較聰明一點的寫法? import re strs= [ 'aabbccdd', 'aaabccdd', 'bbccaaaaa', 'bbccddee', '12345678', ] patterns = [ r'(^.*a{5}.*$)', r'(^.*a{4}.*$)', r'(^.*a{3}.*$)', r'(^.*a{2}.*$)', r'(^.+$)', ] s = "\n".join(strs) pattern = r'(?m)' + r'|'.join(patterns) maptab = re.findall(pattern,s) # or use re.finditer / callable-iterator.lastindex --------------------------------------------- In [167]: maptab Out[167]: [('', '', '', 'aabbccdd', ''), ('', '', 'aaabccdd', '', ''), ('bbccaaaaa', '', '', '', ''), ('', '', '', '', 'bbccddee'), ('', '', '', '', '12345678')] 接著就自己再做處理囉 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.156.250
uranusjr:^.* 感覺是個不錯的表情符號 06/19 14:30
uranusjr:^.*a 好像也不錯 06/19 14:31
eaden:感謝,我再試試看 ^^ 06/19 16:49
darkgerm:^.*~$ # 可以 match vim 的備份檔XDDD 06/19 16:58
swpoker:r(^.*)a 好像也很可愛勒 06/19 17:40
bob123:XDD 06/19 23:58