Comment extraire efficacement les parenthèses imbriquées en Python à l'aide d'expressions régulières et de pyparsing ?

Patricia Arquette
Libérer: 2024-11-03 11:47:29
original
363 Les gens l'ont consulté

How can you effectively extract nested parentheses in Python using regular expressions and pyparsing?

Extraction de parenthèses imbriquées en Python à l'aide de Regex

En Python, extraire des parenthèses imbriquées à l'aide d'expressions régulières peut s'avérer difficile. Une approche courante consiste à utiliser la méthode re.compile(), comme démontré dans l'extrait de code fourni. Cependant, cette méthode peut ne pas toujours donner les résultats souhaités lorsqu'il s'agit de constructions imbriquées complexes.

Pour les situations impliquant des parenthèses imbriquées, une approche alternative utilisant la bibliothèque pyparsing offre une plus grande flexibilité. Pyparsing permet la création de règles de grammaire plus élaborées, comme le montre l'exemple :

<code class="python">import pyparsing # make sure you have this installed

thecontent = pyparsing.Word(pyparsing.alphanums) | '+' | '-'
parens     = pyparsing.nestedExpr( '(', ')', content=thecontent)</code>
Copier après la connexion

La fonction nestedExpr() définit une grammaire pour faire correspondre les parenthèses imbriquées. Il faut trois arguments : les caractères des parenthèses ouvrantes et fermantes et l'expression à faire correspondre entre les parenthèses.

Voici un exemple d'utilisation de la grammaire définie :

<code class="python">>>> parens.parseString("((a + b) + c)")</code>
Copier après la connexion

Le résultat de cette analyse L'opération est une représentation de liste imbriquée de l'expression correspondante :

(                          # all of str
 [
  (                        # ((a + b) + c)
   [
    (                      #  (a + b)
     ['a', '+', 'b'], {}   
    ),                     #  (a + b)      [closed]
    '+',
    'c'
   ], {}
  )                        # ((a + b) + c) [closed]
 ], {}  
)                          # all of str    [closed]
Copier après la connexion

Pour obtenir un format de liste imbriquée de l'expression correspondante, utilisez la méthode asList() :

<code class="python">res = parens.parseString("((12 + 2) + 3)")
res.asList()</code>
Copier après la connexion

Cela renverra :

[[['12', '+', '2'], '+', '3']]
Copier après la connexion

Par conséquent, en utilisant la grammaire des expressions imbriquées de pyparsing, vous pouvez efficacement faire correspondre et extraire des parenthèses imbriquées dans des chaînes de type mathématique.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal