首頁 > Java > java教程 > 如何使用正規表示式以空格分割字串,同時保留引用的段?

如何使用正規表示式以空格分割字串,同時保留引用的段?

Linda Hamilton
發布: 2024-12-30 09:54:10
原創
344 人瀏覽過

How to Split Strings by Spaces While Preserving Quoted Segments Using Regular Expressions?

用空格分割字串,不包括引用的段

在正規表示式領域,在保留引用段的同時按空格分割字串的任務對於新手用戶來說可能會令人畏懼。為了應對這項挑戰,我們尋求一種強大的解決方案,將輸入字串準確地分成其組成元素。

提供的範例字串呈現了一種特定情況,其中空格分隔單詞,但不在單引號或雙引號段內。所需的輸出保留這些引用的片段,確保像「will be」或「正規表示式」這樣的短語保持完整。

適合此任務的正規表示式非常簡單:

[^\s"']+|"([^"]*)"|'([^']*)'
登入後複製

分解這個表達式:

  • [^s"'] :符合不是空格、引號或單一字元的字元序列引號。
  • '([^']*)':符合單引號字串,捕獲第三個捕獲組中的內容。
  • 要在Java 中使用此表達式,我們可以使用以下內容code:

此程式碼迭代輸入字串,擷取帶引號和不帶引號的段,從而產生拆分元素的列表。或者,我們可以使用更簡單的版本:
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());
    }
}
登入後複製

這個簡化版本包括清單中帶引號和不帶引號的元素。
List<String> matchList = new ArrayList<>();
Pattern regex = Pattern.compile("[^\s\"']+|\"[^\"]*\"|'[^']*'");
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
    matchList.add(regexMatcher.group());
}
登入後複製

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板