Re: [問題] 在Python匹配數字類似形式的編號

看板RegExp (正規表示式 Regular Expression)作者 (Cindy Wang)時間9年前 (2015/07/05 23:12), 9年前編輯推噓0(000)
留言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
文章代碼(AID): #1LcKbiGv (RegExp)
文章代碼(AID): #1LcKbiGv (RegExp)