我有一个字符串"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之前 - 但无效!
答案 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