在Dart中,我想使用正则表达式拆分字符串,并将匹配的分隔符包含在结果列表中。因此,对于分隔符
在一些语言中,如C#,JavaScript,Python和Perl,根据https://dev59.com/XmUo5IYBdhLWcg3w7S-T#15668433,可以通过简单地包含捕获括号中的分隔符来实现这一点。该行为似乎已在https://ecma-international.org/ecma-262/9.0/#sec-regexp.prototype-@@split中记录。
然而,在Dart中似乎不起作用:
编辑:在正则表达式中,使用后顾和先行,放置
.
,我希望字符串 123.456.789
被拆分为 [123,。,456,。,789]
。在一些语言中,如C#,JavaScript,Python和Perl,根据https://dev59.com/XmUo5IYBdhLWcg3w7S-T#15668433,可以通过简单地包含捕获括号中的分隔符来实现这一点。该行为似乎已在https://ecma-international.org/ecma-262/9.0/#sec-regexp.prototype-@@split中记录。
然而,在Dart中似乎不起作用:
print(“123.456.789” .split(new RegExp(r“(\。)”)));
产生与没有括号相同的结果。有没有办法让 split()
在Dart中像这样工作?否则,我想它将必须是一个 allMatches()
实现。编辑:在正则表达式中,使用后顾和先行,放置
((?<=\.)|(?=\.))
可以处理单个分隔符。我将会有多个分隔符,对于这种方法的效率并不确定。请问是否可行?读性显然降低,为了允许分隔符.
和;
,需要哪一个呢?
((?<=\.)|(?=\.)|(?<=;)(?=;))
或者
((?<=\.|;)|(?=\.|;))
。
测试结果显示两个都可以工作。
123.456.789;abc;.xyz.;ABC
期望得到什么结果? - ctwheels.
之前或之后。但我对正则表达式的了解不足,无法确定这是否是一种匹配事物的低效方式。 - Ozzin