You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用C#正则表达式拆分字符串并保留标签作为独立子串?

解决方法

要让标签作为独立子串保留在拆分后的数组里,你需要在正则表达式中使用捕获组——把匹配标签的部分用圆括号包起来,这样Regex.Split就会把捕获到的标签也包含在结果数组中。

具体实现代码

string myText = "I'm sorry, you don't have enough <color=#00FF00>energy</color> to continue";
// 用捕获组匹配标签,括号会保留匹配到的标签内容
string[] parts = Regex.Split(myText, @"(<.*?>)");
// 过滤掉拆分后可能出现的空字符串
parts = parts.Where(s => !string.IsNullOrEmpty(s)).ToArray();

结果说明

执行后得到的数组就是你需要的结构:

  • "I'm sorry, you don't have enough "
  • "<color=#00FF00>"
  • "energy"
  • "</color>"
  • " to continue"

原理解释

默认Regex.Split只会返回分隔符之间的内容,而把分隔符丢弃。但如果分隔符被放在捕获组(圆括号包裹)里,捕获到的内容就会被保留在结果数组中,和普通文本交替排列。最后过滤空字符串是为了避免字符串开头/结尾是标签时产生的空元素。

内容的提问来源于stack exchange,提问作者Simon A Carreño

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 23:20:37