[英]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.