0

使用 python 和正则表达式,我尝试匹配重复/重叠模式/块,例如

04/00127-48
U 05062012
A: SAKARK
T_ Par.: dsfsd

04/00127-48
U 05062012
A: SAKARK
T_ Par.: dsfsd
04/00168-42
U 05062012
A: SAKARK
T_ Par.: fdfs
04/00168-43
U 05062012
A: SAKARK
T_ Par.: fdfs

我试过了

'(?=(\d+\/.*))'

这似乎有效

'((\d+\/.*?)=?\d+\/)

但是有更好的方法吗?

4

1 回答 1

2

这回答了你的问题:

re.findall(r'.+?(?=\d\d\/|$)',s,re.DOTALL)

re.DOTALL需要让.匹配行结束。

正则表达式的r前面使其成为原始字符串,因此带有反斜杠的转义符保持原样,因此正则表达式函数将处理它们。这里不需要它,但对于正则表达式来说仍然是一个好习惯。

你的问题不是很清楚。也许这更符合你想要的?

list(zip(*[iter(s.splitlines())]*4))

它给出了一个包含元组的列表。

于 2012-07-07T18:20:33.813 回答