Aufteilen von Zeichenfolgen mit Leerzeichen unter Ausschluss zitierter Segmente
Im Bereich der regulären Ausdrücke die Aufgabe, eine Zeichenfolge in Leerzeichen aufzuteilen und dabei zitierte Segmente beizubehalten kann für unerfahrene Benutzer entmutigend sein. Um dieser Herausforderung zu begegnen, suchen wir nach einer robusten Lösung, die unsere Eingabezeichenfolge genau in ihre Bestandteile aufteilt.
Die bereitgestellte Beispielzeichenfolge stellt einen speziellen Fall dar, in dem Leerzeichen Wörter abgrenzen, jedoch nicht innerhalb von Segmenten in einfache oder doppelte Anführungszeichen. Die gewünschte Ausgabe behält diese in Anführungszeichen gesetzten Segmente bei und stellt sicher, dass Phrasen wie „wird sein“ oder „regulärer Ausdruck“ intakt bleiben.
Ein geeigneter regulärer Ausdruck für diese Aufgabe ist überraschend einfach:
[^\s"']+|"([^"]*)"|'([^']*)'
Aufschlüsselung dieses Ausdrucks:
Um diesen Ausdruck in Java zu verwenden, können wir Folgendes verwenden Code:
List<String> matchList = new ArrayList<>(); Pattern regex = Pattern.compile("[^\s\"']+|\"([^\"]*)\"|'([^']*)'"); Matcher regexMatcher = regex.matcher(subjectString); while (regexMatcher.find()) { if (regexMatcher.group(1) != null) { // Add double-quoted string without the quotes matchList.add(regexMatcher.group(1)); } else if (regexMatcher.group(2) != null) { // Add single-quoted string without the quotes matchList.add(regexMatcher.group(2)); } else { // Add unquoted word matchList.add(regexMatcher.group()); } }
Dieser Code durchläuft die Eingabezeichenfolge und erfasst Segmente in Anführungszeichen und ohne Anführungszeichen, was zu einer Liste der geteilten Elemente führt. Alternativ können wir eine einfachere Version verwenden:
List<String> matchList = new ArrayList<>(); Pattern regex = Pattern.compile("[^\s\"']+|\"[^\"]*\"|'[^']*'"); Matcher regexMatcher = regex.matcher(subjectString); while (regexMatcher.find()) { matchList.add(regexMatcher.group()); }
Diese vereinfachte Version enthält sowohl zitierte als auch nicht zitierte Elemente in der Liste.
Das obige ist der detaillierte Inhalt vonWie teile ich Zeichenfolgen durch Leerzeichen auf und behalte gleichzeitig in Anführungszeichen gesetzte Segmente mithilfe regulärer Ausdrücke bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!