Re: [問題] 符合多個正規表示式
※ 引述《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
→
06/19 14:30, , 1F
06/19 14:30, 1F
→
06/19 14:31, , 2F
06/19 14:31, 2F
推
06/19 16:49, , 3F
06/19 16:49, 3F
→
06/19 16:58, , 4F
06/19 16:58, 4F
→
06/19 17:40, , 5F
06/19 17:40, 5F
→
06/19 23:58, , 6F
06/19 23:58, 6F
討論串 (同標題文章)
Python 近期熱門文章
PTT數位生活區 即時熱門文章