import re
regex = re.compile(r"href=\"([^\"]+)\"")
test_str = (" <!DOCTYPE html>\n"
" <html lang=\"fr\">\n\n"
" <head></head>\n"
" <body>\n"
" <div id=\"wm-ipp\" class=\"\" lang=\"en\" style=\"display: block;\"></div>\n"
" <!--\n\n"
" BEGIN WAYBACK TOOLBAR INSERT \n\n"
" -->\n"
" <script src=\"/static/js/disclaim-element.js\" type=\"text/javascript\"></script>\n"
" <script src=\"/static/js/graph-calc.js\" type=\"text/javascript\"></script>\n"
" <script src=\"/static/jflot/jquery.min.js\" type=\"text/javascript\"></script>\n"
" <script type=\"text/javascript\"></script>\n"
" <style type=\"text/css\"></style>\n"
" <script type=\"text/javascript\"></script>\n"
" <!--\n\n"
" END WAYBACK TOOLBAR INSERT \n\n"
" -->\n"
" <header id=\"main_header\">\n"
" <div class=\"header_content\"></div>\n"
" </header>\n"
" <div id=\"main_content\">\n"
" <div id=\"under_top_event\"></div>\n"
" <div id=\"breadcrumbs\"></div>\n"
" <div id=\"main_search\"></div>\n"
" <div id=\"content\">\n"
" <div id=\"page_test\" class=\"home\">\n"
" <div id=\"topline\">\n"
" <h1>\n\n"
" TESTS\n\n"
" </h1>\n"
" </div>\n"
" <div class=\"large_column left_column\">\n"
" <a class=\"top\" title=\"Lire le test : The Final Fantasy\" href=\"/web/20121023121603/http://www.gameweb.fr/articles/test-65-the-final-fantasy-3ds-page-opinion.html\"></a>\n"
" <div class=\"separation\" style=\"margin: 20px 0;\"></div>\n"
" <a class=\"high\" title=\"Lire le test : El Shaddai : Ascension of The Metatron\" href=\"/web/20121023121603/http://www.gameweb.fr/articles/test-63-el-shaddai-ascension-of-the-metatron-ps3-page-opinion.html\"></a>\n"
" <a class=\"high\" title=\"Lire le test : Heroes of Ruin\" href=\"/web/20121023121603/http://www.gameweb.fr/articles/test-62-heroes-of-ruin-3ds-page-opinion.html\"></a>\n"
" <a class=\"high\" title=\"Lire le test : Prototype 2\" href=\"/web/20121023121603/http://www.gameweb.fr/articles/test-61-prototype-2-ps3-page-opinion.html\"></a>\n"
" <a class=\"high\" title=\"Lire le test : Rayman Origins\" href=\"/web/20121023121603/http://www.gameweb.fr/articles/test-60-rayman-origins-ps3-page-opinion.html\"></a>\n"
" </div>\n"
" <div class=\"medium_column right_column\" style=\"padding-top: 70px;\">\n"
" <a class=\"medium\" title=\"Lire le test : Mass Effect 3\" href=\"/web/20121023121603/http://www.gameweb.fr/articles/test-59-mass-effect-3-x360-page-opinion.html\">\n"
" <span class=\"small title\"></span>\n"
" <span class=\"put_score score\"></span>\n"
" <span class=\"description\"></span>\n"
" </a>\n"
" <div class=\"separation\" style=\"margin: 10px 0;\"></div>\n"
" <a class=\"medium\" title=\"Lire le test : Pandora's Tower\" href=\"/web/20121023121603/http://www.gameweb.fr/articles/test-58-pandoras-tower-wii-page-opinion.html\">\n"
" <span class=\"small title\"></span>\n"
" <span class=\"put_score score\"></span>\n"
" <span class=\"description\"></span>\n"
" </a>\n"
" <div class=\"separation\" style=\"margin: 10px 0;\"></div>\n"
" <a class=\"medium\" title=\"Lire le test : I am alive\" href=\"/web/20121023121603/http://www.gameweb.fr/articles/test-57-i-am-alive-x360-page-opinion.html\"></a>\n"
" <div class=\"separation\" style=\"margin: 10px 0;\"></div>\n"
" <a class=\"medium\" title=\"Lire le test : Silent hill downpour\" href=\"/web/20121023121603/http://www.gameweb.fr/articles/test-56-silent-hill-downpour-ps3-page-opinion.html\"></a>\n"
" <div class=\"separation\" style=\"margin: 10px 0;\"></div>\n"
" <a class=\"medium\" title=\"Lire le test : Naruto Storm Generations\" href=\"/web/20121023121603/http://www.gameweb.fr/articles/test-55-naruto-storm-generations-x360-page-opinion.html\"></a>\n"
" <div class=\"separation\" style=\"margin: 10px 0;\"></div>\n"
" <a class=\"medium\" title=\"Lire le test : Street Fighter x Tekken\" href=\"/web/20121023121603/http://www.gameweb.fr/articles/test-54-street-fighter-x-tekken-ps3-page-opinion.html\"></a>\n"
" <div class=\"separation\" style=\"margin: 10px 0;\"></div>\n"
" <a class=\"medium\" title=\"Lire le test : Ninja Gaiden 3\" href=\"/web/20121023121603/http://www.gameweb.fr/articles/test-53-ninja-gaiden-3-ps3-page-opinion.html\"></a>\n"
" <div class=\"separation\" style=\"margin: 10px 0;\"></div>\n"
" <a class=\"medium\" title=\"Lire le test : Asura's Wrath\" href=\"/web/20121023121603/http://www.gameweb.fr/articles/test-52-asuras-wrath-ps3-page-opinion.html\"></a>\n"
" <div class=\"separation\" style=\"margin: 10px 0;\"></div>\n"
" <a class=\"medium\" title=\"Lire le test : The Last Story\" href=\"/web/20121023121603/http://www.gameweb.fr/articles/test-51-the-last-story-wii-page-opinion.html\"></a>\n"
" <div class=\"separation\" style=\"margin: 10px 0;\"></div>\n"
" <a class=\"medium\" title=\"Lire le test : Xenoblade\" href=\"/web/20121023121603/http://www.gameweb.fr/articles/test-50-xenoblade-wii-page-opinion.html\"></a>\n"
" <div class=\"separation\" style=\"margin: 10px 0;\"></div>\n"
" <a class=\"medium\" title=\"Lire le test : SSX\" href=\"/web/20121023121603/http://www.gameweb.fr/articles/test-48-ssx-ps3-page-opinion.html\"></a>\n"
" <div class=\"separation\" style=\"margin: 10px 0;\"></div>\n"
" <a class=\"medium\" title=\"Lire le test : Syndicate\" href=\"/web/20121023121603/http://www.gameweb.fr/articles/test-47-syndicate-pc-page-opinion.html\"></a>\n"
" <div class=\"separation\" style=\"margin: 10px 0;\"></div>\n"
" <a class=\"medium\" title=\"Lire le test : Resident Evil Revelations\" href=\"/web/20121023121603/http://www.gameweb.fr/articles/test-46-resident-evil-revelations-3ds-page-opinion.html\"></a>\n"
" <div class=\"separation\" style=\"margin: 10px 0;\"></div>\n"
" <a class=\"medium\" title=\"Lire le test : Binary Domain\" href=\"/web/20121023121603/http://www.gameweb.fr/articles/test-45-binary-domain-ps3-page-opinion.html\"></a>\n"
" <div class=\"separation\" style=\"margin: 10px 0;\"></div>\n"
" <a class=\"medium\" title=\"Lire le test : Catherine\" href=\"/web/20121023121603/http://www.gameweb.fr/articles/test-43-catherine-x360-page-opinion.html\"></a>\n"
" <div class=\"separation\" style=\"margin: 10px 0;\"></div>\n"
" <a class=\"medium\" title=\"Lire le test : Soulcalibur V\" href=\"/web/20121023121603/http://www.gameweb.fr/articles/test-44-soulcalibur-v-ps3-page-opinion.html\"></a>\n"
" <div class=\"separation\" style=\"margin: 10px 0;\"></div>\n"
" </div>\n"
" </div>\n"
" </div>\n"
" </div>\n"
" <footer id=\"main_footer\"></footer>\n"
" </body>\n"
" </html>\n"
" <!--\n\n\n"
" FILE ARCHIVED ON 12:16:03 oct. 23, 2012 AND …\n\n"
" -->\n")
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