gpt4 book ai didi

dart - 使用 `$1`的Dart正则表达式

转载 作者:行者123 更新时间:2023-12-03 04:56:34 25 4
gpt4 key购买 nike

我想在$1正则表达式中使用dart来获取表达式中的分组。

就像javascript正则表达式一样。

void main() {
// javascript
// 'hello-world'.replace(/-(w)/, '+$1'); // hello+world

print('hello-world'.replaceAll(RegExp(r'-(w)'), '+\$1')); // hello+$1orld
}

完全出乎意料。

预期结果 hello+world,实际结果 hello+$1orld

最佳答案

Dart replaceAll method不会将其第二个参数视为替换模式。

Dart允许您使用普通的Dart表达式来计算替换,而不是引入用于在字符串中指定替换的新语言。
Dart具有简短的函数语法,因此它的长度不超过字符串,但是它允许您在必要时插入任意复杂的计算。

因此,使用 replaceAllMapped 函数并按如下所示编写替换:

print('hello-world'.replaceAllMapped(RegExp(r'-(w)'), (m) => '+${m[1]}'));

对于此特定示例,RegExp非常简单,您可以用纯字符串替换:

print('hello-world'.replaceAll(RegExp(r'-(?=w)'), '+'));

仅当 -后跟 +时,这才将 -替换为 w

关于dart - 使用 `$1`的Dart正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60502892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com