Heim > Java > javaLernprogramm > Wie teile ich Zeichenfolgen mit Leerzeichen in Anführungszeichen mithilfe regulärer Ausdrücke?

Wie teile ich Zeichenfolgen mit Leerzeichen in Anführungszeichen mithilfe regulärer Ausdrücke?

Patricia Arquette
Freigeben: 2024-12-18 02:22:14
Original
554 Leute haben es durchsucht

How to Split Strings with Spaces Inside Quotes Using Regular Expressions?

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"']+|\"([^\"]*)"|'([^']*)'
Nach dem Login kopieren

Dieser Ausdruck trennt die Zeichenfolge in zwei Arten von Mustern:

  • Wörter ohne Anführungszeichen:Beliebige Sequenz von Zeichen, die keine Leerzeichen oder Anführungszeichen enthalten, erfasst in der ersten Gruppe.
  • Zeichenfolgen in Anführungszeichen: In einfache oder doppelte Anführungszeichen eingeschlossene Sequenzen, die keine Anführungszeichen enthalten. Die Erfassungsgruppen erfassen den Text innerhalb der Anführungszeichen, mit Ausnahme der Anführungszeichen selbst.

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
    }
}
Nach dem Login kopieren

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());
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage