J'écris un formateur de code et j'ai besoin d'aide. Je dois trouver les blocs de code et je veux utiliser des expressions régulières. Le code que je dois au format ressemble fondamentalement à ceci:RegEx pour trouver des blocs de code imbriqués
KEYWORD name {
word
word
...
}
Je suis en mesure de trouver les blocs qui commencent par {} et se terminent par cette expression:
[{](.*?)[}]
Mais je ne sais pas comment ajouter la partie "KEYWORD name"
à l'expression. Les deux sont des chaînes personnalisées qui peuvent contenir n'importe quel caractère sauf ;
, {
et }
.
Un autre problème est que mes blocs de code peuvent être imbriqués. Je ne sais pas comment ajouter cette fonctionnalité.
Je ne sais pas si vos blocs de code peuvent être imbriqués, mais si c'est le cas, votre regex ne fonctionnera pas. – Jordi
Oh! Tu as raison! Je n'ai pas encore testé. Mais ils doivent être imbriqués ... –
Dès l'imbrication (à des profondeurs arbitraires), les regex deviennent difficiles à utiliser. Strictement parlant, les constructions imbriquées ne sont pas régulières et donc inadaptées à la correspondance avec des expressions régulières. Certains arômes de regex modernes (par exemple, PCRE, Perl, .NET) permettent une correspondance récursive, mais Java n'en fait pas partie. Donc, vous avez probablement besoin de construire/utiliser un analyseur pour ce travail. –