Maison > développement back-end > Tutoriel Python > Comment puis-je faire correspondre et extraire des parenthèses imbriquées en Python à l'aide de PyParsing ?

Comment puis-je faire correspondre et extraire des parenthèses imbriquées en Python à l'aide de PyParsing ?

Linda Hamilton
Libérer: 2024-11-02 06:43:29
original
725 Les gens l'ont consulté

How Can I Match and Extract Nested Parentheses in Python Using PyParsing?

Python : faire correspondre des parenthèses imbriquées avec des expressions régulières

La correspondance de parenthèses imbriquées est une tâche courante lorsqu'il s'agit d'expressions mathématiques. Cependant, l'utilisation d'expressions régulières présente des limites lorsqu'il s'agit de gérer les constructions imbriquées. Bien que vous ayez peut-être tenté de résoudre ce problème avec re.compile('(. )'), il ne capture que les parenthèses les plus extérieures.

Adoption de PyParsing pour les constructions imbriquées

Au lieu d'utiliser des expressions régulières, une approche plus appropriée consiste à utiliser PyParsing, une bibliothèque spécialement conçue pour analyser des structures de texte complexes. PyParsing utilise une technique d'analyse récursive, lui permettant de gérer efficacement les constructions imbriquées.

Voici un exemple utilisant PyParsing :

<code class="python">import pyparsing

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

Cela définit deux éléments : le contenu, qui correspond aux caractères alphanumériques, ' ' , et '-', et parenthèses, qui représentent des expressions imbriquées entourées par parenthèses.

Exemple d'utilisation

Pour l'utiliser, vous pouvez suivre cet exemple :

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

Sortie attendue :

<code class="text">(
  [
    (
      ['a', '+', 'b'], {}
    ),
    '+',
    'c'
  ], {}
)</code>
Copier après la connexion

Extraction de données dans la liste Format

Si vous préférez extraire la liste imbriquée, vous pouvez utiliser ce qui suit :

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

Sortie :

<code class="text">[[['12', '+', '2'], '+', '3']]</code>
Copier après la connexion

En utilisant PyParsing, vous pouvez efficacement faire correspondre et extraire des parenthèses imbriquées dans des structures de texte complexes.

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