# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r",\s*(\"subresource_uris\":.[^}]*[}])"
test_str = ("{\n"
" \"first_page_uri\": \"/2010-04-01/Accounts/ACd7a7c24a3c7b0b0ddcde452fd6c18aae/Usage/Records/LastMonth.json?PageSize=1000&Page=0\",\n"
" \"end\": 387,\n"
" \"previous_page_uri\": null,\n"
" \"uri\": \"/2010-04-01/Accounts/ACd7a7c24a3c7b0b0ddcde452fd6c18aae/Usage/Records/LastMonth.json?PageSize=1000&Page=0\",\n"
" \"page_size\": 1000,\n"
" \"start\": 0,\n"
" \"usage_records\": [\n"
" {\n"
" \"category\": \"wireless-usage\",\n"
" \"description\": \"SIM Usage\",\n"
" \"account_sid\": \"ACd7a7c24a3c7b0b0ddcde452fd6c18aae\",\n"
" \"start_date\": \"2023-01-01\",\n"
" \"end_date\": \"2023-01-31\",\n"
" \"as_of\": \"2023-02-05T06:53:40+00:00\",\n"
" \"count\": \"0\",\n"
" \"count_unit\": \"units\",\n"
" \"usage\": \"0\",\n"
" \"usage_unit\": \"units\",\n"
" \"price\": \"0\",\n"
" \"price_unit\": \"usd\",\n"
" \"api_version\": \"2010-04-01\",\n"
" \"uri\": \"/2010-04-01/Accounts/ACd7a7c24a3c7b0b0ddcde452fd6c18aae/Usage/Records/LastMonth.json?Category=wireless-usage&StartDate=2023-01-01&EndDate=2023-01-31\",\n"
" \"subresource_uris\": {\n"
" \"all_time\": \"/2010-04-01/Accounts/ACd7a7c24a3c7b0b0ddcde452fd6c18aae/Usage/Records/AllTime.json?Category=wireless-usage\",\n"
" \"today\": \"/2010-04-01/Accounts/ACd7a7c24a3c7b0b0ddcde452fd6c18aae/Usage/Records/Today.json?Category=wireless-usage\",\n"
" \"yesterday\": \"/2010-04-01/Accounts/ACd7a7c24a3c7b0b0ddcde452fd6c18aae/Usage/Records/Yesterday.json?Category=wireless-usage\",\n"
" \"this_month\": \"/2010-04-01/Accounts/ACd7a7c24a3c7b0b0ddcde452fd6c18aae/Usage/Records/ThisMonth.json?Category=wireless-usage\",\n"
" \"last_month\": \"/2010-04-01/Accounts/ACd7a7c24a3c7b0b0ddcde452fd6c18aae/Usage/Records/LastMonth.json?Category=wireless-usage\",\n"
" \"daily\": \"/2010-04-01/Accounts/ACd7a7c24a3c7b0b0ddcde452fd6c18aae/Usage/Records/Daily.json?Category=wireless-usage\",\n"
" \"monthly\": \"/2010-04-01/Accounts/ACd7a7c24a3c7b0b0ddcde452fd6c18aae/Usage/Records/Monthly.json?Category=wireless-usage\",\n"
" \"yearly\": \"/2010-04-01/Accounts/ACd7a7c24a3c7b0b0ddcde452fd6c18aae/Usage/Records/Yearly.json?Category=wireless-usage\"\n"
" }\n"
" },\n"
" {\n"
" \"category\": \"pv-basic-rooms\",\n"
" \"description\": \"Go Rooms\",\n"
" \"account_sid\": \"ACd7a7c24a3c7b0b0ddcde452fd6c18aae\",\n"
" \"start_date\": \"2023-01-01\",\n"
" \"end_date\": \"2023-01-31\",\n"
" \"as_of\": \"2023-02-05T06:53:40+00:00\",\n"
" \"count\": \"0\",\n"
" \"count_unit\": \"\",\n"
" \"usage\": \"0\",\n"
" \"usage_unit\": \"\",\n"
" \"price\": \"0\",\n"
" \"price_unit\": \"usd\",\n"
" \"api_version\": \"2010-04-01\",\n"
" \"uri\": \"/2010-04-01/Accounts/ACd7a7c24a3c7b0b0ddcde452fd6c18aae/Usage/Records/LastMonth.json?Category=pv-basic-rooms&StartDate=2023-01-01&EndDate=2023-01-31\",\n"
" \"subresource_uris\": {\n"
" \"all_time\": \"/2010-04-01/Accounts/ACd7a7c24a3c7b0b0ddcde452fd6c18aae/Usage/Records/AllTime.json?Category=pv-basic-rooms\",\n"
" \"today\": \"/2010-04-01/Accounts/ACd7a7c24a3c7b0b0ddcde452fd6c18aae/Usage/Records/Today.json?Category=pv-basic-rooms\",\n"
" \"yesterday\": \"/2010-04-01/Accounts/ACd7a7c24a3c7b0b0ddcde452fd6c18aae/Usage/Records/Yesterday.json?Category=pv-basic-rooms\",\n"
" \"this_month\": \"/2010-04-01/Accounts/ACd7a7c24a3c7b0b0ddcde452fd6c18aae/Usage/Records/ThisMonth.json?Category=pv-basic-rooms\",\n"
" \"last_month\": \"/2010-04-01/Accounts/ACd7a7c24a3c7b0b0ddcde452fd6c18aae/Usage/Records/LastMonth.json?Category=pv-basic-rooms\",\n"
" \"daily\": \"/2010-04-01/Accounts/ACd7a7c24a3c7b0b0ddcde452fd6c18aae/Usage/Records/Daily.json?Category=pv-basic-rooms\",\n"
" \"monthly\": \"/2010-04-01/Accounts/ACd7a7c24a3c7b0b0ddcde452fd6c18aae/Usage/Records/Monthly.json?Category=pv-basic-rooms\",\n"
" \"yearly\": \"/2010-04-01/Accounts/ACd7a7c24a3c7b0b0ddcde452fd6c18aae/Usage/Records/Yearly.json?Category=pv-basic-rooms\"\n"
" }\n"
" },\n"
" ")
matches = re.finditer(regex, test_str, re.MULTILINE | re.DOTALL)
for matchNum, match in enumerate(matches, start=1):
print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group()))
for groupNum in range(0, len(match.groups())):
groupNum = groupNum + 1
print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum)))
# Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.
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