import re
regex = re.compile(r"(?<=\"3h\":|\"3h\":)((d+)|\d+\.\d+)(?=)")
test_str = "{\"city\":{\"id\":1217734,\"name\":\"Boysun\",\"findname\":\"BOYSUN\",\"country\":\"UZ\",\"coord\":{\"lon\":67.198608,\"lat\":38.206108},\"zoom\":8,\"langs\":[{\"link\":\"http:\\/\\/en.wikipedia.org\\/wiki\\/Boysun\"},{\"ru\":\"Бойсун\"}]},\"time\":1394871628,\"main\":{\"temp\":274.74,\"temp_min\":274.74,\"temp_max\":274.74,\"pressure\":823.92,\"sea_level\":1035.91,\"grnd_level\":823.92,\"humidity\":98},\"wind\":{\"speed\":0.6,\"deg\":97.004},\"clouds\":{\"all\":92},\"weather\":[{\"id\":804,\"main\":\"Clouds\",\"description\":\"overcast clouds\",\"icon\":\"04d\"}],\"rain\":{\"3h\":0.1},\"snow\":{\"3h\":0.85}}"
matches = regex.finditer(test_str)
for match_num, match in enumerate(matches, start=1):
print(f"Match {match_num} was found at {match.start()}-{match.end()}: {match.group()}")
for group_num, group in enumerate(match.groups(), start=1):
print(f"Group {group_num} found at {match.start(group_num)}-{match.end(group_num)}: {group}")
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Python, please visit: https://docs.python.org/3/library/re.html