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

私はあなたの質問と少し混乱していますが、2つの正規表現を使用できます:

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 に答える