小编Ozz*_*zin的帖子

dart:使用正则表达式拆分字符串并包含分隔符

在 Dart 中,我想使用正则表达式拆分字符串,并在结果列表中包含匹配的分隔符。因此,使用分隔符.,我希望将字符串123.456.789拆分为[ 123, ., 456, ., 789 ].

在某些语言中,如 C#、JavaScript、Python 和 Perl,根据/sf/answers/1096790341/,这可以通过简单地在捕获括号中包含分隔符来完成。该行为似乎记录在https://ecma-international.org/ecma-262/9.0/#sec-regexp.prototype-@@split

但是,这在 Dart 中似乎不起作用:

print("123.456.789".split(new RegExp(r"(\.)")));

产生与没有括号完全相同的东西。有没有办法split()在 Dart 中像这样工作?否则我想它必须是一个allMatches()实现。

编辑:放入((?<=\.)|(?=\.))正则表达式显然可以完成单个分隔符的工作,具有后视和前瞻。我实际上会有一堆分隔符,我不确定这种方法的效率。有人可以建议是否可以吗?易读性肯定会降低:允许分隔符.and ;,是否需要 ((?<=\.)|(?=\.)|(?<=;)(?=;)) or ((?<=\.|;)|(?=\.|;)。测试

print("123.456.789;abc;.xyz.;ABC".split(new RegExp(r"((?<=\.|;)|(?=\.|;))")));

表明两者都有效。

regex dart

4
推荐指数
1
解决办法
1445
查看次数

标签 统计

dart ×1

regex ×1