正则表达式组找到一个范围

时间:2012-04-11 11:53:35

标签: python regex

我有一个字符串"age > 4 < 6"

我想获得最小和最大范围(4分是最小值,6分是最大值) 如果订单不是问题,那么"age < 6 > 4"也应该与"age > 4 < 6"

一样有效

我目前有:

pattern = re.compile(r'(?P<min>age.*?> ?[\d+] ?)(?P<max>age.*?< ?[\d+] ?)')
address = pattern.search('age > 4 < 6')
min, max = (address.group('min'), address.group('max'))
print min, max

但这对我不起作用。

我正在尝试使用.*?允许min在最大值或最大值之前到达min之前 - 但无效!

2 个答案:

答案 0 :(得分:4)

>>> re.search('( < (?P<min>\d+)| > (?P<max>\d+))+', 'age < 4 > 6').groupdict()
{'max': '6', 'min': '4'}

答案 1 :(得分:1)

我对你的问题有点困惑,但你可以使用两个正则表达式:

text = "age > 4 < 6"
pmin,pmax = re.compile(r'age.*?< ?(\d+)'), re.compile(r'age.*?> ?(\d+)')
amin,amax = pmin.search(text), pmax.search(text)
min, max  = amin.group(1), amax.group(1)
print min, max