从句子中提取金额的Regex某场景不生效,求解决方案
问题原因
你当前使用的正则无法匹配第三个金额,核心问题出在开头的\b单词边界规则:\b只会匹配「单词字符(数字、字母、下划线)」和「非单词字符」的交界位置,虽然从示例代码看第三个金额590前的>属于非单词字符,理论上应该触发边界匹配,但部分正则引擎在解析带HTML标签的字符串时,标签字符的特殊属性会偶发边界识别失效的情况。
修复方案
方案1:提取所有格式符合的金额数字
直接去掉正则开头的\b即可,修正后正则:(?i)(\d+(?:[.,]\d+)?)
方案2:只提取INR标识后的金额(避免匹配到无关数字)
如果需要更精准的匹配,确保提取的都是INR对应的金额,可以增加正向零宽断言,修正后正则:(?i)(?<=INR\D*)\d+(?:[.,]\d+)?
验证效果
用你提供的HTML片段测试上述正则,均可正常提取全部三个金额:
- 2,550
- 399.59
- 590
内容的提问来源于stack exchange,提问作者vikash singh
相关产品推荐
相关产品推荐

