je suis en train de travailler sur une macro pour le Wiki MoinMoin écrit en Python.
Ma macro permet de récupérer une liste de titres de pages en regardant le contenu de la page.
Pour l'instant, elle se base sur le modèle
= texte =
or celui-ci permet de spécifier un titre H1 et n'est pas réellement spécifique à un titre de page[1] et j'aimerais qu'il puisse également reconnaitre les titres sous formes de texte gras
'''texte'''
Actuellement, dans ma macro, c'est la boucle
header1_re = re.compile(r'^\s*=\s(.*)\s=$', re.MULTILINE)
for match in header1_re.finditer(daycontent):
if match:
title = match.group(1)
result.append("<a href=\"%s/%s\">%s (%s)" % (request.getBaseURL(),link,title,datestr))
J'ai donc essayé de modifier
re.compile(r'^\s*=\s(.*)\s=$', re.MULTILINE)
par
re.compile(r"^\s*['''|=]\s(.*)\s['''|=]$", re.MULTILINE)
Et plusieurs autres solutions, mais je me rend fou avec kodos parce que je n'arrive pas du tout à trouver la RE qui marche avec le texte que je veux matcher...
quelqu'un peut-il me donner un coup de main ?
ps : j'ai testé avec bbb au lieu de ''' au cas ou ce sont des caractères spéciaux qu'il faudrait que je protège d'une manière ou d'une autre (je n'ai pas trouvé d'infos sur ça)
[1] ce n'est pas pratique si on utilise la macro TableOfContents() pour générer une table des matières d'avoir un titre H1 qui englobe tous les autres
# Re: aide sur les RE
Posté par Étienne . Évalué à 4.
Ici tu utiliser ['''|=] mais ce que tu veux dire c'est ("""|=) car [] n'utilise pas de séparateur et prend chaque caractère comme une alternative
[abc|d] revient à dire soit a soit b soit c soit |
alors que
(abc|d) revient à dire soit abc soit d
Ton expression devient après correction
re.compile(r"^\s*('''|=)\s(.*)\s('''|=)$", re.MULTILINE)
J'espère avoir été clair
Etienne
[^] # Re: aide sur les RE
Posté par carlo . Évalué à 1.
Merci du conseil, je n'avais pas vu cette différence ou ne l'avait pas compris et je comprends maintenant un peu mieux pourquoi kodos me sortait des groupes avec ''texte'''.
Par contre, du coup, le fait de mettre des parenthèses modifie la numérotation de mes groupes non ?
je continue à chercher voire si j'arrive à obtenir cette fois-ci ce que je veux.
[^] # Re: aide sur les RE
Posté par benoar . Évalué à 2.
re.compile(r"^\s*('''|=)\s(?P.*)\s('''|=)$", re.MULTILINE)
ou ignorer ceux qui ne t'intéressent pas :
re.compile(r"^\s*(?:'''|=)\s(.*)\s(?:'''|=)$", re.MULTILINE)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.