[問題] 正規表達式的括號中括號分組問題

看板Python作者 (Rafael)時間7年前 (2018/07/18 23:21), 編輯推噓2(206)
留言8則, 3人參與, 7年前最新討論串1/1
Hi 各位前輩與同好們好, 最近在做一個小Project裡面會用到Regular Expression, 產生了個小問題, 雖然不影響我後續寫程式, 但總覺得資料量大到一個程度時, 可能會太佔空間, 因此上來提問 我的正規表達式是這樣寫的: (\d)+\s+([A-Z][a-z]+(\s*[A-Z][a-z]+)+)\s+([A-Z]{3})\s+(\d{1,3}(,\d\d\d)*)' 要抓的資料格式大概長這樣 01 Donald Trump USA 108,304,999 預計要有的分組應該是 01 Donald Trump USA 108,304,999 但因為中間和最後的括號裡頭都還有括號, 要去表示某些資料可有可無 所以輸出的分組結果會變成 01 Donald Trump Trump USA 108,304,999 ,304,999 多出了兩個不必要的資料, 想請問有什麼方式可以替代不是要分組的括號呢? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.32.7.53 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1531927313.A.59D.html

07/18 23:24, 7年前 , 1F
括號最前面加上?: 例如(?:/d)
07/18 23:24, 1F

07/18 23:25, 7年前 , 2F
*(?:\d)
07/18 23:25, 2F

07/18 23:31, 7年前 , 3F
請問這樣的用意是???....
07/18 23:31, 3F

07/18 23:37, 7年前 , 4F
哦!是非捕獲分組 但用了不知道為什麼失敗了QQ
07/18 23:37, 4F

07/18 23:40, 7年前 , 5F
成功了!!!非常感謝!!!
07/18 23:40, 5F

07/19 09:49, 7年前 , 6F
也可以用 (?P<name>\d+) 幫 group 取名
07/19 09:49, 6F

07/19 09:50, 7年前 , 7F
然後用 match.group('name') 取值
07/19 09:50, 7F

07/22 21:27, 7年前 , 8F
哦! 原來還有這個功能! 感謝樓上!
07/22 21:27, 8F
文章代碼(AID): #1RJriHMT (Python)
文章代碼(AID): #1RJriHMT (Python)