Здесь есть 2 подхода:
(лучше) Подход без регулярных выражений
"Текст", который вы пытаетесь сопоставить, выглядит (почти) как действительныйОбъект JSON / словарь Python (за исключением некоторых дополнительных скобок и части HOLIDAY
, которая может происходить из-за плохого копирования).
Используйте этот факт, чтобы преобразовать его в объект, а затем просто наберите ключ 'quantity'
верхнего уровня:
d = {'category_path': ['Mens', 'Tees'],
'colors': ['BLACK'],
'created': '2018-12-01',
'modified': '2018-12-20',
'on_sale': 'false',
'original_price': 35,
'price': 35,
'quantity': '214',
'sizes': ['S', 'M', 'L', 'XL', 'XXL'],
'upcs': ['00000000190235804075',
'00000000190235804082',
'00000000190235804099',
'00000000190235804105',
'00000000190235804112'],
'variations': [{'color': 'BLACK',
'on_sale': 'false',
'original_price': 35,
'price': 35,
'quantity': '31',
'size': 'S',
'upc': '00000000190235804075'},
...,
{'color': 'BLACK',
'on_sale': 'false',
'original_price': 35,
'price': 35,
'quantity': '3',
'size': 'XXL',
'upc': '00000000190235804112'}]}
print(d['quantity'])
# 214
(В крайнем случае) Подход Regex
Если вы настаиваете, вы можете использовать re.search
, который по умолчанию останавливается на первом совпадении, как написано в его документации :
Просматривать строку в поисках первогоместо, где шаблон регулярного выражения производит совпадение
import re
text = """ ({{ HOLIDAY","on_sale":false,"quantity":"214","original_price":35,"price":35,"category_path":["Mens","Tees"],"created":"2018-12-01","modified":"2018-12-20","colors":["BLACK"],"sizes":["S","M","L","XL","XXL"],"upcs":["00000000190235804075","00000000190235804082","00000000190235804099","00000000190235804105","00000000190235804112"],"variations":[{"upc":"00000000190235804075","color":"BLACK","size":"S","on_sale":false,"quantity":"31","original_price":35,"price":35},{"upc":"00000000190235804082","color":"BLACK","size":"M","on_sale":false,"quantity":"67","original_price":35,"price":35},{"upc":"00000000190235804099","color":"BLACK","size":"L","on_sale":false,"quantity":"80","original_price":35,"price":35},{"upc":"00000000190235804105","color":"BLACK","size":"XL","on_sale":false,"quantity":"33","original_price":35,"price":35},{"upc":"00000000190235804112","color":"BLACK","size":"XXL","on_sale":false,"quantity":"3","original_price":35,"price":35}]}"""
print(re.search(r'"quantity":"(.*?)"', text).group(1))
# 214