作者LonelyDream (Rafael)
看板Python
标题[问题] 正规表达式的括号中括号分组问题
时间Wed Jul 18 23:21:49 2018
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://webptt.com/cn.aspx?n=bbs/Python/M.1531927313.A.59D.html
1F:推 TuCH: 括号最前面加上?: 例如(?:/d) 07/18 23:24
2F:→ TuCH: *(?:\d) 07/18 23:25
3F:→ LonelyDream: 请问这样的用意是???.... 07/18 23:31
4F:→ LonelyDream: 哦!是非捕获分组 但用了不知道为什麽失败了QQ 07/18 23:37
5F:→ LonelyDream: 成功了!!!非常感谢!!! 07/18 23:40
6F:推 bibo9901: 也可以用 (?P<name>\d+) 帮 group 取名 07/19 09:49
7F:→ bibo9901: 然後用 match.group('name') 取值 07/19 09:50
8F:→ LonelyDream: 哦! 原来还有这个功能! 感谢楼上! 07/22 21:27