首頁 >Java >java教程 >如何使用正規表示式拆分引號內帶空格的字串?

如何使用正規表示式拆分引號內帶空格的字串?

Patricia Arquette
Patricia Arquette原創
2024-12-18 02:22:14554瀏覽

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

用於分割字串的正規表示式:忽略引號內的空格

當這些空格包含在單一或兩個空格內時,識別字串拆分的空格可能會很困難引號。要解決此問題,請考慮以下正規表示式:

[^\s"']+|\"([^\"]*)"|'([^']*)'

此表達式將字串分為兩種類型的模式:

  • 不帶引號的單字: 任何序列不包含空格或引號的字符,在第一組中捕獲。
  • 引用strings: 用單引號或雙引號括起來的序列,其中不帶引號。捕獲組捕獲引號內的文本,不包括引號本身。

Java 實作:

以下 Java程式碼使用此正規表示式來分割字串:

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
    }
}

更簡單選項:

如果可以接受在傳回的清單中維護引號,則可以使用更簡單的程式碼版本:

List<String> matchList = new ArrayList<>();
Pattern regex = Pattern.compile("[^\s\"']+|\"[^\"]*\"|'[^']*'");
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
    matchList.add(regexMatcher.group());
}

此方法不太複雜,但在傳回的清單中包含引號列出元素。

以上是如何使用正規表示式拆分引號內帶空格的字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn