regex - 如何在 Dart 的 RegEx 文本中获取组的开始和结束索引?
问题描述
例如,使用以下代码:
final regex = RegExp(r'([0-9]).*([A-Z])');
final text = 'Test 5 with B';
final match = regex.firstMatch(text);
那么match.group(1)
是'5'
和match.group(2)
是'B'
。但是,如何获取每个组的开始和结束索引,以便我可以用空格或其他东西替换它们?
解决方案
对象的Match.start()
和Match.end()
方法Match
不提供任何获取组索引的方法。您需要将第一个匹配项直接替换为捕获您需要保留的内容的模式:
final regex = RegExp(r'[0-9](.*)[A-Z]');
final text = 'Test 5 with B';
print(text.replaceFirstMapped(regex, (match) {
return "Cat${match.group(1)}Dog"; }
));
// => Test Cat with Dog
这里,
[0-9](.*)[A-Z]
匹配一个数字,然后将除换行符之外的任何零个或多个字符捕获到第 1 组中,然后[A-Z]
匹配一个大写的 ASCII 字母replaceFirstMapped
替换第一场比赛......"Cat${match.group(1)}Dog"
- 带有Cat
+ 组 1 值 +Dog
。
推荐阅读
- javascript - 无法以 HTML 格式打印表格
- javascript - React JSX 选择性地将属性传递给组件
- c++ - 如何让我的程序运行直到付款为 0?
- javascript - 在 Azure Function 中运行 Playwright
- vue.js - 我们需要销毁/断开 Vue.observable 吗?
- pandas - scipy 优化模型返回所有 nan 解决方案
- jmeter - 如何在 CLI 模式下加载多个 jmeter 属性文件
- angular - 角度步进器
- f# - 类型不匹配计数列表 F#
- reactjs - 如何在自动完成 Material-ui 中的 NoOptionsText 上应用样式