为了账号安全,请及时绑定邮箱和手机立即绑定

如何将分隔符数组传递给 Regex.Split 函数?

如何将分隔符数组传递给 Regex.Split 函数?

C#
慕田峪7331174 2023-08-20 11:09:31
正如标题所示,如何将分隔符数组传递给 Regex.Split 函数?我需要用单词列表(也是字符串)分割句子(字符串)。
查看完整描述

1 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

您可以从“分隔符”单词构建正则表达式模式,如下所示:


var delim = new string[] {"fox", "lazy"};

var pattern =  @"(?:\s|^)(?:" + string.Join("|", delim.Select(Regex.Escape)) + @")(?:\s|$)";

\s开头和结尾处的字符串锚点可确保分隔符包含其周围的所有空白,并避免Scunthorpe 问题。使用Regex.Espace可确保带有正则表达式元字符的分隔符不会破坏您的代码。


结果模式如下所示:


(?:\s|^)(?:fox|lazy)(?:\s|$)

演示1

如果您想在标记之间保留分隔符,请更改正则表达式以在前瞻/后瞻中使用它们:


var delimGroup = "(?:"+string.Join("|", delim.Select(Regex.Escape))+")";

var pattern =  @"\s(?="+delimGroup+")|(?<="+delimGroup+@")\s";

演示2


查看完整回答
反对 回复 2023-08-20
  • 1 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信