JavaScript如何通过正则匹配#占位符对应位置数字提取目标子串
正则实现方案
核心逻辑是先对带#占位符的模板做正则化转换,再从长文本中匹配符合结构的子串,不需要额外复杂逻辑。
实现步骤
- 先对模板字符串做正则特殊字符转义,避免模板里的普通字符被误识别为正则语法标记
- 将转义后模板里的所有
#占位符替换为\d+,该正则片段可匹配1位及以上的连续数字,完全符合占位符匹配任意数字的要求 - 用生成的最终正则规则扫描长文本,提取匹配到的子串即可
代码示例(Python实现)
import re Str1 = "Adds 2 to 5 Cold Damage Adds 20 to 50 Fire Damage Adds 1 to 100 Lightning Damage" Str2 = "Adds # to # Fire Damage" # 模板转正则规则 regex_pattern = re.escape(Str2).replace(r'\#', r'\d+') # 执行匹配 match_result = re.search(regex_pattern, Str1) res = match_result.group() if match_result else "" print(res)
运行上述代码的输出和预期完全一致:
Adds 20 to 50 Fire Damage
适配调整说明
如果需要提取长文本里所有符合模板结构的子串,把代码里的
re.search替换为re.findall即可拿到全部结果;如果需要限制占位符匹配的数字长度,可将替换用的\d+调整为对应规则,比如要匹配1-3位数字就换成\d{1,3}。
内容的提问来源于stack exchange,提问作者Bigred
相关产品推荐
相关产品推荐

