看板 Python 關於我們 聯絡資訊
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
TuCH: 括號最前面加上?: 例如(?:/d) 07/18 23:24
TuCH: *(?:\d) 07/18 23:25
LonelyDream: 請問這樣的用意是???.... 07/18 23:31
LonelyDream: 哦!是非捕獲分組 但用了不知道為什麼失敗了QQ 07/18 23:37
LonelyDream: 成功了!!!非常感謝!!! 07/18 23:40
bibo9901: 也可以用 (?P<name>\d+) 幫 group 取名 07/19 09:49
bibo9901: 然後用 match.group('name') 取值 07/19 09:50
LonelyDream: 哦! 原來還有這個功能! 感謝樓上! 07/22 21:27