Zunächst empfehle ich nicht, "*" in regulären Ausdrücken zu verwenden. Ja, ich weiß, es ist das am häufigsten verwendete Trennzeichen für mehrere Zeichen, aber es ist trotzdem eine schlechte Idee. Dies liegt daran, dass "any" zwar eine beliebige Anzahl von Wiederholungen für dieses Zeichen aufweist, "any" jedoch 0 enthält. Dies ist normalerweise etwas, für das Sie einen Syntaxfehler auslösen möchten, das Sie nicht akzeptieren möchten. Stattdessen schlage ich vor, das +
Zeichen zu verwenden, das mit jeder Wiederholung von Längen> 1 übereinstimmt. Außerdem haben Sie, soweit ich sehen kann, mit Ausdrücken in Klammern fester Länge zu tun. Infolgedessen können Sie wahrscheinlich die {x, y}
Syntax verwenden, um die gewünschte Länge spezifisch anzugeben.
Wenn Sie jedoch wirklich eine nicht gierige Wiederholung benötigen, empfehle ich Ihnen, den Allmächtigen zu konsultieren ?
. Wenn dies nach dem Ende eines Regex-Wiederholungsspezifizierers platziert wird, wird dieser Teil des Regex gezwungen, die geringstmögliche Textmenge zu finden.
Davon abgesehen würde ich sehr vorsichtig mit dem sein, ?
da es, wie der Sonic Screwdriver in Dr. Who, die Tendenz hat, "leicht" unerwünschte Dinge zu tun, wenn es nicht sorgfältig kalibriert wird. Wenn Sie beispielsweise Ihre Beispieleingabe verwenden möchten, wird diese ((1)
als Übereinstimmung identifiziert (beachten Sie das Fehlen eines zweiten Rparens).