0
votes

Comment diviser les paires de touches / valeur SGF comme 'A [B] [Q] G [Garçon]'?

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 commentaires

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] + \])? en utilisant une marque d'interrogation.


3 Réponses :


1
votes

avec re.finditer fonction: xxx

la sortie (séquentiellement): xxx


1 commentaires

C'est ce dont j'avais besoin. Je ne savais pas que Re.Finditer existait. Merci!



1
votes

Vous pouvez utiliser cette regex pour une solution à base de fragmentée, xxx

Démo pour la division basée sur

échantillon de code Python pour une solution à base fractionnée, xxx

impressions, xxx

Si vous souhaitez une solution basée sur les matchs, vous pouvez utiliser cette regex, xxx

Démo pour le match basé sur

échantillon de codes Python pour la solution basée sur les matchs, xxx

impressions, xxx

Utilisez qui vous convient le mieux.


0 commentaires

0
votes

Votre regex ne correspond pas à tous les formats car \ [. + \] code> et [A-Z] code> nécessite une correspondance. . + code> est également une correspondance gourmande et correspondra jusqu'à la dernière occurrence de ] code>

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>

['A[B][q]', 'G[boy]']
['A[B][q]']
['A[B]']


0 commentaires