import re
regex = re.compile(r"url\s*\((?:\'|\"|)((\S*|\?)(?<!\'|\"))(?=\'\)|\"\)|\))", flags=re.MULTILINE)
test_str = ("/* 2019-07-03 13:38:44 */\n"
"background:url(/uploads/2019/03/0002-image(thumbnail_product).jpg)\n"
"@charset \"UTF-8\";@font-face{font-family:lato_blackregular;src:url(\"../../Common/common/fonts/lato/lato-black-webfont.eot\");src:url(\"../../Common/common/fonts/lato/lato-black-webfont.eot?#iefix\") format(\"embedded-opentype\"),url(\"../../Common/common/fonts/lato/lato-black-webfont.woff\") format(\"woff\"),url(\"../../Common/common/fonts/lato/lato-black-webfont.ttf\") format(\"truetype\"),url(\"../../Common/common/fonts/lato/lato-black-webfont.svg?#lato_blackregular\") format(\"svg\");font-weight:400;font-style:normal}@font-face{font-family:latobold;src:url(\"../../Common/common/fonts/lato/lato-bold-webfont.eot\");src:url(\"../../Common/common/fonts/lato/lato-bold-webfont.eot?#iefix\") format(\"embedded-opentype\"),url(\"../../Common/common/fonts/lato/lato-bold-webfont.woff\") format(\"woff\"),url(\"../../Common/common/fonts/lato/lato-bold-webfont.ttf\") format(\"truetype\"),url(\"../../Common/common/fonts/lato/lato-bold-webfont.svg?#latobold\") format(\"svg\");font-weight:400;font-style:normal}@font-face{font-family:latoregular;src:url(\"../../Common/common/fonts/lato/lato-regular-webfont.eot\");src:url(\"../../Common/common/fonts/lato/lato-regular-webfont.eot?#iefix\") format(\"embedded-opentype\"),url(\"../../Common/common/fonts/lato/lato-regular-webfont.woff\") format(\"woff\"),url(\"../../Common/common/fonts/lato/lato-regular-webfont.ttf\") format(\"truetype\"),url(\"../../Common/common/fonts/lato/lato-regular-webfont.svg?#latoregular\") format(\"svg\");font-weight:400;font-style:normal}@font-face{font-family:latolight;src:url(\"../../Common/common/fonts/lato/lato-light-webfont.eot\");src:url(\"../../Common/common/fonts/lato/lato-light-webfont.eot?#iefix\") format(\"embedded-opentype\"),url(\"../../Common/common/fonts/lato/lato-light-webfont.woff\") format(\"woff\"),url(\"../../Common/common/fonts/lato/lato-light-webfont.ttf\") format(\"truetype\"),url(\"../../Common/common/fonts/lato/lato-light-webfont.svg?#latoregular\") format(\"svg\");font-weight:400;font-style:normal}@font-face{font-family:lato_lightregular;src:url(\"../../Common/common/fonts/lato/lato-light-webfont.eot\");src:url(\"../../Common/common/fonts/lato/lato-light-webfont.eot?#iefix\") format(\"embedded-opentype\"),url(\"../../Common/common/fonts/lato/lato-light-webfont.woff\") format(\"woff\"),url(\"../../Common/common/fonts/lato/lato-light-webfont.ttf\") ")
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