import re
regex = re.compile(r"(?<!\d)(\d)(?!\d)", flags=re.MULTILINE)
test_str = ("1. 1-1 Prise en main de blender\n"
"2. 2-1 Présentation de la sculpture\n"
"3. 2-2 Sculpter le visage\n"
"4. 2-3 Retopologie : Créer la structure du visage\n"
"5. 2-4 Retopologie : Placer les vertices de face\n"
"6. 2-5 Retopologie : Placer les vertices de profil\n"
"7. 2-6 Finalisation de la tête\n"
"8. 2-7 Modéliser et placer les yeux\n"
"9. 2-8 Modéliser les cheveux\n"
"10. 2-9 Modéliser les cils et sourcils\n"
"11. 2-10 Modéliser l'intérieur de la bouche\n"
"12. 3-1 Préparer la modélisation du corps\n"
"13. 3-2 Modéliser le corps\n"
"14. 3-3 Modéliser les pieds\n"
"15. 3-4 Modéliser les mains\n"
"16. 3-5 Modéliser les doigts partie 1\n"
"17. 3-6 Modéliser les doigts partie 2\n"
"18. 3-7 Ajuster et préciser les bras\n"
"19. 3-8 Ajuster le corps pour préparer le raccord à la tête\n"
"20. 3-9 Raccorder le corps à la tête\n"
"21. 3-10 Ajuster la tête à l'aide du \"Modifier\" lattice\n"
"22. 4-1 Créer le pantalon\n"
"23. 4-2 Créer le T-shirt\n"
"24. 4-3 Créer les bottes\n"
"25. 4-4 Donner de l'épaisseur aux habits\n"
"26. 5-1 Texturer le pantalon\n"
"27. 5-2 Texturer le T-shirt\n"
"28. 5-3 Texturer les bottes\n"
"29. 5-4 Texturer les cheveux\n"
"30. 5-5 Faire un dégradé sur les cheveux\n"
"31. 5-6 Texturer les cils/sourcils\n"
"32. 5-7 Texturer les yeux\n"
"33. 5-8 Préparer le personnage au texturing\n"
"34. 5-9 Dépliage UV du personnage\n"
"35. 5-10 Préparer les images pour le texture paint\n"
"36. 5-11 Peindre le corps\n"
"37. 5-12 Peindre le visage\n"
"38. 5-13 Peindre les mains\n"
"39. 5-14 Peindre l'intérieur de la bouche et les lèvres\n"
"40. 5-15 Reliefs et spécularité du visage\n"
"41. 6-1 Parties délavées du pantalon\n"
"42. 6-2 Ajouter un Fresnel aux textures\n"
"43. 7-1 Créer l'armature\n"
"44. 7-2 Appliquer la symétrie du squelette\n"
"45. 7-3 Créer un contrôleur \"Master\"\n"
"46. 7-4 Créer une IK pour les jambes\n"
"47. 7-5 Créer une IK pour les bras\n"
"48. 7-6 Créer un contrôleur pour le regard\n"
"49. 7-7 Créer un contrôleur pour plier les doigts\n"
"50. 7-8 Appliquer les contrôleurs en symétrie\n"
"51. 7-9 Connecter l'armature au personnage\n"
"52. 7-10 Customiser les contrôleurs genoux et coudes\n"
"53. 7-11 Customiser le contrôleur \"Master\"\n"
"54. 7-12 Customiser les contrôleurs IK\n"
"55. 7-13 Customiser les contrôleurs de la colonne vertébrale\n"
"56. 7-14 Customiser les contrôleurs épaules, cou, tête\n"
"57. 7-15 Appliquer des couleurs aux groupes de \"bones\"\n"
"58. 7-16 Customiser les contrôleurs des doigts\n"
"59. 7-17 Faire suivre le regard\n"
"60. 7-18 Automatiser la fermeture des doigts\n"
"61. 7-19 Créer des drivers pour plier les doigts\n"
"62. 7-20 Corrections de la fermeture du poing\n"
"63. 7-21 Réduire la résolution du pantalon en conservant les détails dans la texture\n"
"64. 7-22 Réduire la résolution du T-shirt en conservant les détails dans la texture\n"
"65. 7-23 Préparer le personnage pour éviter les éventuels défauts liés aux habits\n"
"66. 8-1 Créer les expressions faciales\n"
"67. 8-2 Fermer les yeux\n"
"68. 8-3 Créer un driver pour la fermeture des yeux\n"
"69. 8-4 Finaliser l'expression de \"colère\" et lui créer un driver\n"
"70. 8-5 Faire briller les yeux\n"
"71. 9-1 Connecter les habits à l'armature et peindre les influences des os\n"
"72. 9-2 Créer le \"Kameha\"\n"
"73. 9-3 Placer la première pose du personnage\n"
"74. 9-4 Créer le mouvement de caméra du premier plan de notre animation\n"
"75. 9-5 Affiner les réglages et faire sourire le personnage\n"
"76. 9-6 Animer le mouvement du personnage\n"
"77. 9-7 Correction bug possible de texture des yeux\n"
"78. 9-8 Animer le \"Kameha\"\n"
"79. 9-9 Placer et animer la 2ème caméra\n"
"80. 9-10 Créer l'effet tremblement de la caméra\n"
"81. 9-11 Créer le mouvement des cheveux\n"
"82. 10-1 Créer le fond et les lumières\n"
"83. 10-2 Texturer le fond et régler la profondeur de champs des caméras\n"
"84. 10-3 Réglages de rendu\n"
"85. 10-4 Point sur l'export et explications lumières volumétriques\n"
"79. 9-9 Placer et animer[xnmjklxx]la 2ème caméra\n"
"80. 9-10 Créer l'effet tremblement de la caméra\n"
"81. 9-11 Créer le mouvement des cheveux\n"
"82. 10-1 Créer le[xwerrxxxxx]fond et les lumières\n"
"83. 10-2[xx]Texturer le fond et régler la profondeur de champs des caméras\n"
"84. 10-3 Réglages de rendu\n"
"85. 10-4 Point[xxxxtzzxxx]sur l'export et explications ")
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