en python, j'essaie de diviser une chaîne avec des paires de clé / valeur SGF dans une liste ou une correspondance d'objet comme si:
pattern = r'([A-Z]\[.+\])[A-Z]'
3 Réponses :
avec la sortie (séquentiellement): p> re.finditer code > strong> fonction:
C'est ce dont j'avais besoin. Je ne savais pas que Re.Finditer existait. Merci!
Vous pouvez utiliser cette regex pour une solution à base de fragmentée, Démo pour la division basée sur strong> p> échantillon de code Python pour une solution à base fractionnée, p> impressions, P > Si vous souhaitez une solution basée sur les matchs, vous pouvez utiliser cette regex, P> Démo pour le match basé sur strong> p> échantillon de codes Python pour la solution basée sur les matchs, P> impressions, p> Utilisez qui vous convient le mieux. P> P>
Votre regex ne correspond pas à tous les formats car vous pouvez utiliser re.findall et apportez la valeur entre les premiers crochets facultatifs et répéter la dernière partie 0+ TEMPS: P> \ [. + \] code> et [A-Z] code> nécessite une correspondance. . + code> est également une correspondance gourmande et correspondra jusqu'à la dernière occurrence de ] code> ['A[B][q]', 'G[boy]']
['A[B][q]']
['A[B]']
Voulez-vous dire comme ça? ideone.com/dagz43
Merci pour votre commentaire. Votre motif de regex semble fonctionner pour plusieurs entrées de clé / valeur telles que «A [B] [Q] G [garçon]» mais ne fonctionnait pas sur des célibataires comme, 'A [B] [Q]. Des pensées?
Dans ce cas, vous pouvez faire la dernière partie facultative
([AZ] \ [[[[[[[[[[[AZ] \] \ [[[AZ] \]) ([AZ] \ [[[[AZ] + \])? Code> en utilisant une marque d'interrogation.