Regex.Split string into substrings by a delimiter while preserving whitespace
我创建了一个正则表达式以用定界符(
1 2 3 4 5 6 7 | 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); } |
输出:
1 2 3 4 5 | "sfdd fgjhk fguh " "$turn" ".bak.orm" "$hahr" "*____f" |
问题是
1 2 3 4 | "sfdd fgjhk fguh " "$turn.bak.orm" "" "$hahr*____f" |
本质上,我想用
您似乎想使用以美元开头的模式进行拆分,然后使用除空格和美元字符以外的0个或多个字符:
1 2 3 | var list = Regex.Split(s, @"(\\$[^\\s$]*)") .Where(x => !string.IsNullOrEmpty(x)) .ToList(); |
详细信息
-
( -捕获组的开始(以便Regex.Split 标记化字符串,可以将匹配项保留在结果数组中)-
\\$ -美元符号 -
[^\\s$]* -否定字符类,匹配除空格(\\s )和美元符号以外的0个或更多字符
-
-
) -捕获组的末尾。
请参阅正则表达式演示:
要包括第二个定界符,可以使用