正则表达式:如何让正则表达式匹配重叠?

时间:2017-06-08 17:35:25

标签: python regex parsing match

我有一个格式如下的字符串:

'0 = text defining value 1 = text2 2 = text3, text3 (text3) 3 = text4'

具有未知数量的值。我正在尝试使用正则表达式来匹配每个数字描述对的0和“文本定义值”。现在,我有

'([0-9]{1,2}) ?= ?(.*?) ?[0-9]{0,2} ?[=$]'

作为我的正则表达式,但这只匹配字段中的其他所有值。关于如何让它与所有这些相匹配的任何建议?

由于

1 个答案:

答案 0 :(得分:0)

您可以使用前瞻来确定下一个分区的位置:

import re

pattern = re.compile(r"(\d+)\s+=\s+(.*?)(?=\s+\d+\s+|$)")

your_text = "0 = text defining value 1 = text2 2 = text3, text3 (text3) 3 = text4"

pairs = pattern.findall(your_text)
# [('0', 'text defining value'),
#  ('1', 'text2'),
#  ('2', 'text3, text3 (text3)'),
#  ('3', 'text4')]

如果您正在寻找的是什么,那么您的问题就会有些模糊。