Dart中如何使用正则表达式将<br /> HTML标签替换为换行符'\n'
Dart 基于RegExp替换
<br />标签为换行符的实现方法 基础场景实现(匹配题目给定样例)
直接通过Dart内置的RegExp类构造匹配<br />的正则规则,调用字符串的replaceAll方法完成全量替换即可,代码如下:
void main() { // 输入样例 const inputStr = 'one<br />two<br />three'; // 构造匹配<br />标签的正则 final brReg = RegExp(r'<br />'); // 执行替换 final result = inputStr.replaceAll(brReg, '\n'); print(result); }
运行上述代码会输出符合预期的结果:
one two three
实际开发兼容优化版
真实业务场景中HTML的br标签可能存在多种不规范写法,比如无空格的<br/>、多空格的<br />、非自闭合的<br>、大小写混写的<BR />等,可以调整正则规则兼容以上场景:
void main() { const inputStr = '第一段<br>第二段<br/>第三段<br />第四段<BR />第五段'; // 正则说明: // 1. <br 匹配br标签开头 // 2. \s* 匹配0到多个空白字符,兼容不同空格数量 // 3. /? 匹配0到1个自闭合斜杠,兼容非自闭合br写法 // 4. caseSensitive: false 忽略大小写,兼容大写标签 final brReg = RegExp(r'<br\s*/?>', caseSensitive: false); final result = inputStr.replaceAll(brReg, '\n'); print(result); }
如果场景中存在带属性的br标签(比如<br class="break" />),可以将正则替换为RegExp(r'<br[^>]*>', caseSensitive: false),即可匹配任意格式的br标签。
注意:写Dart正则时推荐给字符串加
r前缀创建原始字符串,不需要额外对反斜杠做转义,能减少正则书写错误。
内容的提问来源于stack exchange,提问作者Piyush
相关产品推荐
相关产品推荐

