Bonjour,
le code suivant contient un début de regex pour chercher des regexs à la sauce Python.
Cela ne fonctionne pas. J'ai mis des tests montrant les problèmes avec la regex utilisée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 #! /usr/bin/env python3 # Source : http://www.developpez.net/forums/d1173336/autres-langages/python-zope/general-python/regex-recuperer-contenu-entre-guillemets-possibilite-dutiliser/#post6443734 import re # ``(...)`` sert à grouper des directives. # ``.`` indique n'importe quel caractère. # ``.*`` indique une suite éventuellement vide # de caractères quelconques. # ``?<!...`` demande de vérifier que le caractère # en cours d'analyse n'est pas précédé de ... PATTERN = re.compile(r'"(.*?)(?<!\\)"') someTexts = [ r'Un petit texte et "autre chose \"entre des guillemets\" pour tester"' \ + ' et voilà c\'est fini...', # OK r'Un petit texte et "et attention à ""r...', # OK r'Un petit texte et "et attention à \\"r...', # PAS OK : Chaîne bien fermée mais ce n'est pas vu # car ``\"`` est échapée alors que ``\\`` c'est qu'il est. r'Un petit texte et "et attention à \"r...', # OK r'Un petit texte et "et attention à \\""r...', # PAS OK : Chaîne fermée au mauvais endroit # car ``\"`` est échapée alors que ``\\`` c'est qu'il est. r'Un petit texte et "et attention à \""r...', # OK ] for oneText in someTexts: search = re.search(PATTERN, oneText) print('---', oneText, sep="\n") if search: s = search.start() e = search.end() print(oneText[:s], oneText[s:e], oneText[e:], sep = ">>>") else: print('<< NOTHING FOUND ! >>')
Partager