Re: [問題] 在Python匹配數字類似形式的編號
看板RegExp (正規表示式 Regular Expression)作者CindyLinz (Cindy Wang)時間9年前 (2015/07/05 23:12)推噓0(0推 0噓 0→)留言0則, 0人參與討論串2/2 (看更多)
※ 引述《chuanmaotou (0xFFFFFFFF)》之銘言:
: 如題,我有數種字串需要批配
: 最原始的形式是長這樣子的:133216-546
: 但因為原始資料的來源很多,可能有數種類似的形式
: 如:133216 546、133216--546、133216_546之類的形式
: 而除了這部分的資料外,部份資料可能會有一大串的hash值混雜在裡面
: 像是這樣945a24d21f5de98e_133216-546的形式
: 目前是用(\d{6}-\d{3})|(\d{6} \d{3})來處理,但只能handle兩種形式
: 而且在Python下似乎回傳值是一個list,代表這兩種匹配的結果
: 不知道有什麼方法可以更有效的處理,讓回傳值更單純?
只針對
(\d{6}-\d{3})|(\d{6} \d{3})
來看的話, 可以改成
(\d{6}[ -]\d{3})
剛好意思一樣, 但只有一個 capture;
如果還是需要有好幾個 | 隔開的話,
可以在它們的最外面放一組括號全部裝起來, 像是
((\d{6}-\d{3})|(\d{6} \d{3}))
那麼, 雖然會拿到一個 list, 但是第 0 個總是你要的最後結果,
其他後面的不要管它就好 :p
如果是 perl 的 regex 的話還有這招可以用
(?|(\d{6}-\d{3})|(\d{6} \d{3}))
這個 (?| .... ) 叫作 branch reset,
裝在裡面的不同 branch,
其括號的順序會重疊在一起這樣...
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 112.121.80.249
※ 文章網址: https://www.ptt.cc/bbs/RegExp/M.1436109164.A.439.html
※ 編輯: CindyLinz (112.121.80.249), 07/05/2015 23:13:23
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
RegExp 近期熱門文章
PTT數位生活區 即時熱門文章