如何编写正则匹配指定字符串(如SRL)对应的目标文本内容
正则匹配指定标记后内容的解决方案
需求说明
指定标记字符串为SRL,匹配所有该标记所在行的后续有效内容,拼接后得到结果:DISTRIBUTION SERVICES MANAGEMENT SRL
测试文本:
SC FAN COURIER EXPRESS SRL DISTRIBUTION SERVICES J40/4014/2001 - RO13838336 MANAGEMENT SRL SC FAN COURIER EXPRESS SRL Operator FAN
原有正则问题
当前使用的SRL(.*)存在两个核心问题:
- 未开启全局、多行匹配参数,仅能匹配到第一行的SRL后内容
- 未过滤SRL后无有效内容的行,会捕获到空值
最终调整方案
使用正则:SRL\s*(.+)$,同时开启**全局匹配(g)和多行匹配(m)**两个执行参数。
匹配逻辑说明
SRL:精准匹配指定的标记字符串\s*:匹配标记后紧跟的任意数量空白字符(空格、制表符等),自动跳过无效占位空白(.+):捕获组匹配至少1个非换行的有效内容,自动过滤第三行SRL后无有效内容的情况$:匹配行尾位置,限定仅捕获当前行标记后的内容
代码实现示例(JavaScript)
const testContent = `SC FAN COURIER EXPRESS SRL DISTRIBUTION SERVICES J40/4014/2001 - RO13838336 MANAGEMENT SRL SC FAN COURIER EXPRESS SRL Operator FAN`; // 正则携带g(全局)、m(多行)参数 const matchReg = /SRL\s*(.+)$/gm; const resultArr = []; let curMatch; // 遍历所有匹配结果 while((curMatch = matchReg.exec(testContent)) !== null) { // 去除捕获内容的首尾空白后存入数组 resultArr.push(curMatch[1].trim()); } // 拼接数组得到最终结果 const finalResult = resultArr.join(' '); console.log(finalResult); // 输出:DISTRIBUTION SERVICES MANAGEMENT SRL
内容的提问来源于stack exchange,提问作者shAkur
相关产品推荐
相关产品推荐

