Übereinstimmende Kommas mit Ausnahme von Vorkommen in Klammern
Betrachten Sie die folgende Zeichenfolge:
12,44,foo,bar,(23,45,200),6
Die vorliegende Aufgabe besteht darin, etwas zu erfinden ein regulärer Ausdruck, der speziell auf Kommas abzielt, die außerhalb von Klammern stehen. Mit anderen Worten, im bereitgestellten Beispiel benötigen wir einen regulären Ausdruck, der den beiden Kommas nach „23“ und „45“ entspricht, die anderen jedoch ausschließt.
Java Regular Expression Solution
Vorausgesetzt, es fehlen verschachtelte Klammern, können wir den folgenden regulären Java-Ausdruck verwenden, um das gewünschte Ergebnis zu erzielen Ergebnis:
Pattern regex = Pattern.compile( ", # Match a comma\n" + "(?! # only if it's not followed by...\n" + " [^(]* # any number of characters except opening parens\n" + " \) # followed by a closing parens\n" + ") # End of lookahead", Pattern.COMMENTS);
Erklärung der Regex
Diese Regex verwendet eine negative Lookahead-Behauptung, um zu bestätigen, dass jede nachfolgende Klammer (falls vorhanden) keine schließende Klammer ist. Wenn diese Bedingung erfüllt ist, wird das Komma als Übereinstimmung erkannt.
Die Lookahead-Behauptung funktioniert wie folgt:
Dadurch wird sichergestellt, dass der reguläre Ausdruck nur mit Kommas übereinstimmt, denen nicht unmittelbar eine schließende Klammer folgt.
Das obige ist der detaillierte Inhalt vonWie ordne ich Kommas außerhalb von Klammern in Java zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!