Heim > Java > javaLernprogramm > Wie teile ich Zeichenfolgen durch Leerzeichen auf und behalte dabei mit Regex zitierte Abschnitte bei?

Wie teile ich Zeichenfolgen durch Leerzeichen auf und behalte dabei mit Regex zitierte Abschnitte bei?

Susan Sarandon
Freigeben: 2024-12-15 13:22:15
Original
375 Leute haben es durchsucht

How to Split Strings by Spaces While Preserving Quoted Sections Using Regex?

Teilen von Zeichenfolgen mithilfe von Leerzeichen, wenn sie nicht in Anführungszeichen eingeschlossen sind, mit Regex

Im regulären Ausdruck ist es möglich, eine Zeichenfolge mithilfe von Leerzeichen zu teilen, während Leerzeichen in Abschnitten in Anführungszeichen beibehalten werden. So erreichen Sie dies:

Um das Problem in Ihrem ursprünglichen Ausdruck (?!") zu beheben, der durch Leerzeichen vor Anführungszeichen getrennt wird, berücksichtigen Sie den folgenden regulären Ausdruck:

[^\s"']+|"([^"]*)"|'([^']*)'
Nach dem Login kopieren

Dies Ausdruck erfasst drei Muster:

  1. 1 : Entspricht einem oder mehreren Zeichen, die weder Leerzeichen noch Anführungszeichen sind.
  2. "(2*)": Entspricht a Zeichenfolge in doppelten Anführungszeichen, die die Zeichenfolge ohne Anführungszeichen in der Gruppe erfasst 1.
  3. '(3*)': Entspricht einer Zeichenfolge in einfachen Anführungszeichen und erfasst die Zeichenfolge ohne Anführungszeichen in Gruppe 2.

Um die Zeichenfolge zu teilen, können Sie Java-Code wie verwenden Dies:

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

Dieser Code erstellt eine Liste von Zeichenfolgen, entfernt Anführungszeichen aus zitierten Wörtern und behält Leerzeichen darin bei.


  1. s"'
  2. "
  3. '

Das obige ist der detaillierte Inhalt vonWie teile ich Zeichenfolgen durch Leerzeichen auf und behalte dabei mit Regex zitierte Abschnitte bei?. 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