import re
regex = re.compile(r"<a[^>]*href=\"(?<url>[^\"]*(?<=\?|&)o=(?<number>\d+)[^\"]*)\"[^>]*>\s*last", flags=re.MULTILINE | re.IGNORECASE | re.DOTALL)
test_str = ("<div class=\"listing_thumbs_resultcontainer\">\n"
" \n"
" <span class=\"FloatLeft nav-next-btn\">\n"
" \n"
" \n"
" <a href=\"http://www.mudah.my/Malaysia/nike+air-for-sale?o=1&q=nike air&th=1\" title=\"Go to first page\">« First</a>\n"
" \n\n"
" \n"
" <span class=\"nav-next-btn nohistory marginLeft\">\n"
" <a href=\"http://www.mudah.my/Malaysia/nike+air-for-sale?o=18&q=nike air&th=1\" title=\"Go to previous page\">\n"
" ‹ Previous\n"
" </a>\n"
" </span>\n"
" \n"
" \n"
" \n\n"
" <span class=\"non-active nohistory\">\n"
" <a href=\"http://www.mudah.my/Malaysia/nike+air-for-sale?o=1&q=nike air&th=1\" title=\"Page 1 of 29\">1</a>\n"
" </span>\n"
" <span class=\"non-active nohistory\">\n"
" <a href=\"http://www.mudah.my/Malaysia/nike+air-for-sale?o=2&q=nike air&th=1\" title=\"Page 2 of 29\">2</a>\n"
" </span>\n"
" <span class=\"non-active nohistory\">\n"
" <a href=\"http://www.mudah.my/Malaysia/nike+air-for-sale?o=3&q=nike air&th=1\" title=\"Page 3 of 29\">3</a>\n"
" </span>\n"
" <span class=\"non-active nohistory\">\n"
" <a href=\"http://www.mudah.my/Malaysia/nike+air-for-sale?o=4&q=nike air&th=1\" title=\"Page 4 of 29\">4</a>\n"
" </span>\n"
" <span class=\"non-active nohistory\">\n"
" <a href=\"http://www.mudah.my/Malaysia/nike+air-for-sale?o=5&q=nike air&th=1\" title=\"Page 5 of 29\">5</a>\n"
" </span>\n"
" <span class=\"non-active nohistory\">\n"
" <a href=\"http://www.mudah.my/Malaysia/nike+air-for-sale?o=6&q=nike air&th=1\" title=\"Page 6 of 29\">6</a>\n"
" </span>\n"
" <span class=\"non-active nohistory\">\n"
" <a href=\"http://www.mudah.my/Malaysia/nike+air-for-sale?o=7&q=nike air&th=1\" title=\"Page 7 of 29\">7</a>\n"
" </span>\n"
" <span class=\"non-active nohistory\">\n"
" <a href=\"http://www.mudah.my/Malaysia/nike+air-for-sale?o=8&q=nike air&th=1\" title=\"Page 8 of 29\">8</a>\n"
" </span>\n"
" <span class=\"non-active nohistory\">\n"
" <a href=\"http://www.mudah.my/Malaysia/nike+air-for-sale?o=9&q=nike air&th=1\" title=\"Page 9 of 29\">9</a>\n"
" </span>\n"
" <span class=\"non-active nohistory\">\n"
" <a href=\"http://www.mudah.my/Malaysia/nike+air-for-sale?o=10&q=nike air&th=1\" title=\"Page 10 of 29\">10</a>\n"
" </span>\n"
" <span class=\"non-active nohistory\">\n"
" <a href=\"http://www.mudah.my/Malaysia/nike+air-for-sale?o=11&q=nike air&th=1\" title=\"Page 11 of 29\">11</a>\n"
" </span>\n"
" <span class=\"non-active nohistory\">\n"
" <a href=\"http://www.mudah.my/Malaysia/nike+air-for-sale?o=12&q=nike air&th=1\" title=\"Page 12 of 29\">12</a>\n"
" </span>\n"
" <span class=\"non-active nohistory\">\n"
" <a href=\"http://www.mudah.my/Malaysia/nike+air-for-sale?o=13&q=nike air&th=1\" title=\"Page 13 of 29\">13</a>\n"
" </span>\n"
" <span class=\"non-active nohistory\">\n"
" <a href=\"http://www.mudah.my/Malaysia/nike+air-for-sale?o=14&q=nike air&th=1\" title=\"Page 14 of 29\">14</a>\n"
" </span>\n"
" <span class=\"non-active nohistory\">\n"
" <a href=\"http://www.mudah.my/Malaysia/nike+air-for-sale?o=15&q=nike air&th=1\" title=\"Page 15 of 29\">15</a>\n"
" </span>\n"
" <span class=\"non-active nohistory\">\n"
" <a href=\"http://www.mudah.my/Malaysia/nike+air-for-sale?o=16&q=nike air&th=1\" title=\"Page 16 of 29\">16</a>\n"
" </span>\n"
" <span class=\"non-active nohistory\">\n"
" <a href=\"http://www.mudah.my/Malaysia/nike+air-for-sale?o=17&q=nike air&th=1\" title=\"Page 17 of 29\">17</a>\n"
" </span>\n"
" <span class=\"non-active nohistory\">\n"
" <a href=\"http://www.mudah.my/Malaysia/nike+air-for-sale?o=18&q=nike air&th=1\" title=\"Page 18 of 29\">18</a>\n"
" </span>\n"
" \n"
" <span class=\"nav-active\"><strong>19</strong></span>\n"
" <span class=\"non-active nohistory\">\n"
" <a href=\"http://www.mudah.my/Malaysia/nike+air-for-sale?o=20&q=nike air&th=1\" title=\"Page 20 of 29\">20</a>\n"
" </span\n"
" \n"
" \n"
" </span>\n"
" \n"
" <span class=\"nav-next-btn nohistory FloatRight\">\n"
" \n"
" <span class=\"nav-next-btn nohistory marginRight\">\n"
" <a href=\"http://www.mudah.my/Malaysia/nike+air-for-sale?o=20&q=nike air&th=1\" title=\"Go to next page\">\n"
" Next ›\n"
" </a>\n"
" </span>\n"
" \n"
" \n"
" \n"
" \n"
" <a href=\"http://www.mudah.my/Malaysia/nike+air-for-sale?o=29&q=nike air&th=1\" title=\"Go to last page\">\n"
" Last »\n"
" </a>\n"
" \n"
" \n"
" </span> \n"
" \n"
" </div>")
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