Aufteilen von Zeichenfolgen mit Leerzeichen, die nicht in Anführungszeichen eingeschlossen sind
In diesem Zusammenhang suchen wir nach einer Lösung, um eine Zeichenfolge mithilfe von Leerzeichen in Komponenten zu unterteilen nicht in einfache oder doppelte Anführungszeichen gesetzt. Dies ist eine differenzierte Aufgabe, die eine sorgfältige Regex-Erstellung erfordert.
Eine effektive Lösung besteht darin, einen Regex zu erstellen, der zwei Arten von Elementen erfasst:
Um diese Elemente abzugleichen, können wir den folgenden regulären Ausdruck verwenden:
[^\s"']+|"([^"]*)"|'([^']*)'
In diesem regulären Ausdruck:
Bei der Implementierung dieser Lösung in Java können wir Folgendes verwenden Code:
Pattern regex = Pattern.compile("[^\s\"']+|\"([^\"]*)\"|'([^']*)'"); Matcher regexMatcher = regex.matcher(subjectString); List<String> matchList = new ArrayList<>(); while (regexMatcher.find()) { if (regexMatcher.group(1) != null) { // Double-quoted string without quotes matchList.add(regexMatcher.group(1)); } else if (regexMatcher.group(2) != null) { // Single-quoted string without quotes matchList.add(regexMatcher.group(2)); } else { // Unquoted word matchList.add(regexMatcher.group()); } }
Dieser Ansatz erfasst geschickt beide Arten von Elementen und bietet eine robuste Lösung für das gegebene Problem.
Das obige ist der detaillierte Inhalt vonWie teile ich eine Zeichenfolge durch Leerzeichen auf und ignoriere Leerzeichen in Anführungszeichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!