import re
regex = re.compile(r"\d{2}\s(\d\.)+", flags=re.MULTILINE)
test_str = ("01 5.5.2.3. Port de pêche de Saumaty\n\n"
"07 Le port de pêche de Saumaty est situé dans la darse Saumaty à l’Est de Port Servaux. Le canal d’accès aubassin Saumaty autorise un tirant d’eau de 3,5 m.\n\n"
"13 La darse de Saumaty est réservée aux chalutiers. Une criée est installée sur le quai NE.\n\n"
"01 5.5.2.4. Accès\n\n"
"07 PASSE DU PHARE DE L’ESTAQUE. — Ouverture en chicane pratiquée dans la digue du canal de Marseille au Rhône, large de 50 m, par fonds de 2 à 3 m ouverte à l’ESE. Cette passe est utilisée pour accéder aux ports de plaisance de l’Estaque.\n\n"
"13 — AVERTISSEMENT : se méfier d’une sonde 1,7 m située sur la face interne de l’épi Sud.\n\n"
"19 PASSE DES CHALUTIERS. — Passe large d’environ 75 m par fonds de 3 à 5 m, ouverte au SSW. Cette passeest utilisée par les bateaux de pêche pour accéder à la darse Saumaty.\n\n"
"01 5.5.2.5. Données portuaires\n\n"
"07\n\n"
"Caractéristiques nautiques\n\n"
"Hydrographie locale Passe du Phare de l’Estaque : se méfier d’une sonde 1,7 m située sur la face interne de l’épi Sud.\n"
"Sémaphores Cap Couronne (43° 20,00' N — 5° 03,13' E) ; Bec de l’Aigle (43° 10,49′ N — 005° 34,45′ E).\n"
"Station de sauvetage Marseille Pointe Rouge, caserne des marins pompiers de la Pointe Rouge.\n"
"Installations portuaires")
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