Flutter Dart中提取{{..}}格式模板标签的实现方案
基于正则表达式提取Dart字符串中的模板标签
实现思路
用正则匹配{{与}}包裹的内容,同时自动忽略标签内的首尾空白:
- 正则表达式:
{{\s*(.*?)\s*}}{{:匹配起始双大括号\s*:匹配0个或多个空白字符,处理标签内的首尾空格(.*?):非贪婪捕获标签内的实际内容\s*:匹配标签末尾的空白字符}}:匹配结束双大括号
Dart代码实现
import 'dart:core'; List<String> extractTemplateTags(String input) { final RegExp tagRegex = RegExp(r'{{\s*(.*?)\s*}}'); final matches = tagRegex.allMatches(input); return matches.map((match) => match.group(1)!.trim()).toList(); } void main() { // 测试示例1 String str1 = "Hello {{user}}, your reference is {{ref}}"; print(extractTemplateTags(str1)); // 输出: [user, ref] // 测试示例2(含空白) String str2 = "Hello {{ user }}, your code is {{ code123 }}"; print(extractTemplateTags(str2)); // 输出: [user, code123] }
说明
RegExp.allMatches会遍历字符串,找出所有符合规则的标签match.group(1)获取捕获到的标签内容,再通过trim()彻底清除首尾空白(双重保障避免遗漏)- 最终返回的
List<String>包含所有提取出的纯净标签内容
内容的提问来源于stack exchange,提问作者Rajendra A Verma
相关产品推荐
相关产品推荐

