Maison  >  Article  >  développement back-end  >  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
Linda Hamiltonoriginal
2024-11-02 06:43:29613parcourir

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>

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>

Sortie attendue :

<code class="text">(
  [
    (
      ['a', '+', 'b'], {}
    ),
    '+',
    'c'
  ], {}
)</code>

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>

Sortie :

<code class="text">[[['12', '+', '2'], '+', '3']]</code>

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!

Déclaration:
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