重复正则表达式的一部分?
我需要处理一个电子表格的文本数据。现在我有一个正则表达式,可以正确解析每一行的数据,但这个表达式有点长。其实就是在匹配一个特定的模式,重复了12或13次。
我想重复的模式是
\s+(\w*\.*\w*);
这是正则表达式(简化版)
^\s+(\w*\.*\w*);\s+(\w*\.*\w*);\s+(\w*\.*\w*);\s+(\w*\.*\w*);\s+(\w*\.*\w*);\s+(\w*\.*\w*);
有没有办法在不复制粘贴的情况下,匹配一个模式固定的次数呢?每个部分对应一个数据列,而我需要所有这些数据。顺便说一下,我是用Python来做的。谢谢!
2 个回答
69
(\s+(\w*\.*\w*);){12}
这里的 {n}
表示“重复 n 次”。
如果你想要“12 到 13 次”,可以写成:
(\s+(\w*\.*\w*);){12,13}
如果你想要“12 次以上”,可以写成:
(\s+(\w*\.*\w*);){12,}
6
你可以试试这个:
[x.group() for x in re.finditer(r'(\s+(\w*\.*\w*);)*', text)]
你找到过 findall
这个方法了吗?或者考虑在 ;
这个符号处分割一下?
map(lambda x: x.strip(), s.split(";"))
这可能正是你 真正 想要的。