0

我有一个字符串"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 出现在 max 之前或 max 出现在 min 之前 - 但无济于事!

4

2 回答 2

4
>>> re.search('( < (?P<min>\d+)| > (?P<max>\d+))+', 'age < 4 > 6').groupdict()
{'max': '6', 'min': '4'}
于 2012-04-11T12:24:04.860 回答
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
于 2012-04-11T12:09:15.400 回答