Est-il possible d'écrire une expression régulière qui correspond à un motif imbriqué qui apparaît un nombre inconnu de fois ? Par exemple, une expression régulière peut-elle faire correspondre une accolade ouvrante et une accolade fermante lorsqu'il existe un nombre inconnu d'accolades ouvrantes/fermantes imbriquées dans les accolades extérieures ?
Par exemple :
public MyMethod()
{
if (test)
{
// More { }
}
// More { }
} // End
Devrait correspondre :
{
if (test)
{
// More { }
}
// More { }
}
28 votes
Pour répondre sans ambiguïté à cette question, il faut d'abord définir le terme : "expression régulière".
5 votes
Dans les livres, expressions régulières ne peut pas le faire, mais expressions sans contexte peut. À partir des outils, les analyseurs d'expression modernes appellent
regular expression
quelque chose qui utilise une pile externe, c'est-à-dire qui est capable de revenir en arrière, qui est capable de faire des recherches : ce sontcontext-free expressions
dans la pratique et vous pouvez donc le faire en une seule ligne avec des simili- PCRE2 (PHP, Java, .NET, Perl, ...) ou UNITÉ DE SOINS INTENSIFS -(Obj-C/Swift), souvent avec l'aide de l'outil d'analyse de l'environnement.(?>...)
ou des alternatives telles que la syntaxe(?R)
o(?0)
syntaxes.