使用正则表达式拆分字符串并保留分隔符(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
相关产品推荐
相关产品推荐

