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

使用正则表达式拆分字符串并保留分隔符(Dart实现)

Dart正则拆分字符串并保留连续星号分隔符

需求说明

现有字符串:

final String text = "Hello, I'm Jone. I'm (1) **** USA. I'm (2) **********. This";

期望拆分后得到包含连续星号分隔符的列表:

[
"Hello, I'm Jone. I'm (1) ", 
"****", 
" USA. I'm (2) ", 
"**********",
". This"
]

当前问题

你当前使用的正则RegExp(r'(?=\*)')会在每个单个星号前拆分,导致连续星号被拆分成多个单独元素,无法满足需求。

解决方案

使用包含捕获组的正则匹配连续星号,Dart的split方法会保留捕获组匹配到的分隔符:

void main() {
  final String text = "Hello, I'm Jone. I'm (1) **** USA. I'm (2) **********. This";
  // 匹配一个或多个连续星号,并作为捕获组
  final re = RegExp(r'(\*+)');
  final result = text.split(re);
  print(result);
}

结果验证

运行上述代码后,输出结果与预期完全一致:

[
"Hello, I'm Jone. I'm (1) ", 
"****", 
" USA. I'm (2) ", 
"**********",
". This"
]

正则说明

  • \*+:匹配一个或多个连续的星号(*是正则特殊字符,需要用反斜杠转义)
  • ():将连续星号标记为捕获组,这样split方法会把捕获到的分隔符也包含在拆分结果中

内容的提问来源于stack exchange,提问作者18Typn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 03:17:42