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"']+|"([^"]*)"|'([^']*)'
Dies Ausdruck erfasst drei Muster:
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()); } }
Dieser Code erstellt eine Liste von Zeichenfolgen, entfernt Anführungszeichen aus zitierten Wörtern und behält Leerzeichen darin bei.
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!