Regex zum Aufteilen von Zeichenfolgen: Leerzeichen in Anführungszeichen ignorieren
Das Identifizieren von Leerzeichen für die Zeichenfolgenaufteilung kann schwierig sein, wenn diese Leerzeichen in Einfach- oder Doppelzeichen eingeschlossen sind Zitate. Um dies zu beheben, betrachten Sie den folgenden regulären Ausdruck:
[^\s"']+|\"([^\"]*)"|'([^']*)'
Dieser Ausdruck trennt die Zeichenfolge in zwei Arten von Mustern:
Java-Implementierung:
Der folgende Java-Code verwendet diesen regulären Ausdruck, um die zu teilen string:
List<String> matchList = new ArrayList<>(); Pattern regex = Pattern.compile("[^\s\"']+|\"([^\"]*)"|'([^']*)'"); Matcher regexMatcher = regex.matcher(subjectString); while (regexMatcher.find()) { if (regexMatcher.group(1) != null) { matchList.add(regexMatcher.group(1)); // Double-quoted string } else if (regexMatcher.group(2) != null) { matchList.add(regexMatcher.group(2)); // Single-quoted string } else { matchList.add(regexMatcher.group()); // Unquoted word } }
Einfacher Option:
Wenn die Beibehaltung von Anführungszeichen in der zurückgegebenen Liste akzeptabel ist, ist eine einfachere Version des Codes möglich:
List<String> matchList = new ArrayList<>(); Pattern regex = Pattern.compile("[^\s\"']+|\"[^\"]*\"|'[^']*'"); Matcher regexMatcher = regex.matcher(subjectString); while (regexMatcher.find()) { matchList.add(regexMatcher.group()); }
Dieser Ansatz ist weniger komplex, enthält aber Anführungszeichen in der zurückgegebenen Liste Elemente auflisten.
Das obige ist der detaillierte Inhalt vonWie teile ich Zeichenfolgen mit Leerzeichen in Anführungszeichen mithilfe regulärer Ausdrücke?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!