Maison > Article > développement back-end > Comment puis-je faire correspondre et extraire des parenthèses imbriquées en Python à l'aide de 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!