Ist es möglich, einen regulären Ausdruck zu schreiben, der einem verschachtelten Muster entspricht, das eine unbekannte Anzahl von Malen vorkommt? Kann ein regulärer Ausdruck beispielsweise einer öffnenden und schließenden geschweiften Klammer entsprechen, wenn in den äußeren geschweiften Klammern eine unbekannte Anzahl von öffnenden/schließenden geschweiften Klammern vorhanden ist?Können reguläre Ausdrücke verwendet werden, um verschachtelte Muster zu vergleichen?
Zum Beispiel:
public MyMethod()
{
if (test)
{
// More { }
}
// More { }
} // End
Sollte entsprechen:
{
if (test)
{
// More { }
}
// More { }
}
Um diese Frage eindeutig zu beantworten, muss man zunächst den Begriff "regulärer Ausdruck" definieren. – ridgerunner
@ridgerunner, Richard versucht nicht, die Frage zu beantworten, also ist dein Kommentar vielleicht besser an jemanden gerichtet, der so verlobt ist. – ProfK
Aus den Büchern können * reguläre Ausdrücke * das nicht, aber * kontextfreie Ausdrücke * können.Von den Werkzeugen werden moderne Ausdrucksparser "regulären Ausdruck" etwas nennen, das einen externen Stapel verwendet, was in der Lage ist, rückzuspulen, dh rekursiv zu sein: das sind "kontextfreie Ausdrücke" in der Praxis und als solche können Sie es als one-liner mit Simili- [PCRE2] (http://www.pcre.org/) (PHP, Java, .NET, Perl, ...) oder [ICU] (http: //userguide.icu-project. org/strings/regexp) -konforme (Obj-C/Swift) Werkzeuge, oft mit der Syntax '(?> ...)' oder Alternativen wie die '(? R)' oder '(? 0)' -Syntaxen . –