c# - 为什么 Regex.Split 在正则表达式上拆分时保留分隔符
问题描述
我有以下代码在正则表达式上拆分字符串:
string s = "test;3 régred";
string[] authorsList = Regex.Split(s, "(\\s+)|([\\p{P}\\p{S}])");
foreach (string q in authorsList)
{
Console.WriteLine(q);
}
它应该只拆分和保留:
test
3
régred
但它正在存储
test
;
3
*space*
régred
为什么它不丢失分隔符?
解决方案
您可以使用 . 将分隔符放入捕获组中(...)
。删除它们,它会正常工作:
string[] authorsList = Regex.Split(s, @"\s+|[\p{P}\p{S}]");
输出:
测试
3
重新设置
供参考这里是反问题
推荐阅读
- json - SyntaxError:位置 Y 处 JSON 中的意外标记 X
- d3.js - 带盒子的 D3 树
- angular - 使用角材料垫菜单时的叠加位置错误
- javascript - 单击按钮快速错误 JavaScript
- html - 弯曲方向属性
- flowtype - 从包含 index.css 文件的目录导入 index.js 时没有流类型检查
- netlogo - Netlogo - 给定 2+ 海龟的代理集,找到最常见的颜色
- google-apps-script - Google Slides API 是否允许向对象添加/修改动画?
- c# - 尝试在 .Net Core 控制台应用程序中使用 System.Drawing 时出错
- c - (char *)__strdup 在 c 中做了什么