Je le code suivant (simplifié) - ce qui est l'essence de ce que je voudrais faireModifier le contenu du groupe en python expression régulière MatchObject
def replace_todo(m):
m[2] = '*' if value else ' '
return m.group()
Je veux modifier un groupe spécifique dans l'objet du match, puis restituez l'intégralité de la correspondance, y compris la partie modifiée.
La fonction replace_todo est appelée à chaque match en utilisant
myCompiledRegex.sub(replace_todo, text)
Le texte qui est utilisé comme entrée est
[ ] mah lalalalalaa
[*] mah lalalalalaa
résultat attendu
[*] mah lalalalalaa
[*] mah lalalalalaa
Le regex ressemble à ceci
^(\[(|\*)]) ([a-z][a-z][a-z]) (.*)$
Mais il semble que je ne suis pas autorisé à modifier l'objet match
Quand je tente d'exécuter le code ci-dessus je reçois le TypeError suivant
_sre.SRE_Match' object does not support item assignment
Merci à l'avance :)
EDIT:
En utilisant la solution spicavigo, lors de la conversion de la liste en une chaîne (str (groupes)) voici à quoi cela ressemble
[u’[ ]’, '*’, u’jsp’, u’do something’]
c'est la façon dont il devrait ressembler
[*] jsp do something
S'il vous plaît pourriez-vous inclure dans votre question: (1) regex réel; (2) un ou deux exemples d'entrées réelles avec les résultats attendus. – NPE
Fait :) Mais ce n'est pas vraiment si pertinent, tout ce dont j'ai besoin est un moyen d'éditer un seul groupe de matchs, puis de sortir le match entier :) – Moulde