簡體   English   中英

Regex.Split 字符串通過分隔符分成子字符串,同時保留空格

[英]Regex.Split string into substrings by a delimiter while preserving whitespace

我創建了一個 Regex 來通過分隔符 ( $ ) 拆分字符串,但它沒有按我想要的方式工作。

var str = "sfdd fgjhk fguh      $turn.bak.orm $hahr*____f";
var list = Regex.Split(str, @"(\$\w+)").Where(x => !string.IsNullOrEmpty(x)).ToList();

foreach (var item in list)
{
    Console.WriteLine(item);
}

輸出:

"sfdd fgjhk fguh      "
"$turn"
".bak.orm "
"$hahr"
"*____f"

問題是\\w+不匹配任何句號或星星。 這是我想要的輸出:

"sfdd fgjhk fguh      "
"$turn.bak.orm"
" "
"$hahr*____f"

本質上,我想用$分割一個字符串,並確保$出現在子字符串的開頭而不是其他任何地方(子字符串只能是$可以的)。 我還想確保在第一個子字符串中保留空格字符,但任何匹配項都不應該像第二和第四種情況一樣包含空格。 我不關心區分大小寫。

看起來你想用一個以美元開頭的模式分割,然后有除空格和美元字符之外的任何 0 個或更多字符:

var list = Regex.Split(s, @"(\$[^\s$]*)")
        .Where(x => !string.IsNullOrEmpty(x))
        .ToList();

細節

  • ( - 捕獲組的開始(以便Regex.Split標記字符串,可以將匹配項保留在結果數組中)
    • \\$ - 美元符號
    • [^\\s$]* - 匹配 0 個或多個除空格 ( \\s ) 和美元符號以外的字符的否定字符類
  • ) - 捕獲組的結束。

請參閱正則表達式演示

在此處輸入圖片說明

要包含第二個分隔符,您可以使用@"([€$][^\\s€$]*)"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM