【发布时间】:2021-02-24 16:22:25
【问题描述】:
如何在不多次写入的情况下重复匹配区域的某个部分?
例如:
txt = '1. Reserve December 31, prior year.................................................................................................................. ..4,587,658,997 .......................... .1,030,275,014 .....136,963,988 .......................... .3,276,184,545 .....144,235,450 .......................... .......................... .......................... .......................... ..........................'
splitter = '^([\d.]+)(.*?)\.\s\.[\.\s]+(\(*\d[\d,.]*\)*)?[\.\s]+(\(*\d[\d,.]*\)*)?[\.\s]+(\(*\d[\d,.]*\)*)?[\.\s]+(\(*\d[\d,.]*\)*)?[\.\s]+(\(*\d[\d,.]*\)*)?[\.\s]+(\(*\d[\d,.]*\)*)?[\.\s]+(\(*\d[\d,.]*\)*)?[\.\s]+(\(*\d[\d,.]*\)*)?[\.\s]+(\(*\d[\d,.]*\)*)?[\.\s]+(\(*\d[\d,.]*\)*)?[\.\s]+(\(*\d[\d,.]*\)*)?[\.\s]+(\(*\d[\d,.]*\)*)?'
parts = re.match(splitter, x, re.DOTALL)
我的正则表达式的第一部分,^([\d.]+)(.*?)\.\s\. 获取行号和标题:
- 保留上一年 12 月 31 日
之后,我必须重复此部分 12 次,以确保获得 12 个额外匹配标题 [\.\s]+(\(*\d[\d,.]*\)*)? 之后的数字。
如果没有 12 个数字,则为该特定匹配返回 None。
有没有一种方法可以重复这个表达式 12 次而不必编写这么长的正则表达式?我试过(?:[\.\s]+(\(*\d[\d,.]*\)*)?){12},但没有骰子。
【问题讨论】:
-
我认为如果您使用
regex而不是re模块,这是可能的
标签: python regex regex-group