繁体   English   中英

重复正则表达式的一部分?

[英]repeating a section of a regular expression?

我必须解析电子表格的文本转储。 我有一个正则表达式可以正确解析每一行数据,但它很长。 它基本上只是匹配某个模式 12 或 13 次。

我要重复的模式是

\s+(\w*\.*\w*);

这是正则表达式(缩短)

^\s+(\w*\.*\w*);\s+(\w*\.*\w*);\s+(\w*\.*\w*);\s+(\w*\.*\w*);\s+(\w*\.*\w*);\s+(\w*\.*\w*);

有没有办法在不复制粘贴的情况下匹配一定次数的模式? 这些部分中的每一个都对应于我需要的所有数据列。 顺便说一下,我正在使用 Python。 谢谢!

(\\s+(\\w*\\.*\\w*);){12}

{n}是“重复 n 次”

如果你想要“12 - 13”次,

(\\s+(\\w*\\.*\\w*);){12,13}

如果你想要“12+”次,

(\\s+(\\w*\\.*\\w*);){12,}

如何使用:

[x.group() for x in re.finditer(r'(\s+(\w*\.*\w*);)*', text)]

你找到findall方法了吗? 或者考虑在; ?

map(lambda x: x.strip(), s.split(";"))

可能是你真正想要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM