You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

正则表达式优化:排除与孟加拉语字母衔接的数字匹配

解决孟加拉数字正则匹配误抓问题

问题分析

原正则表达式[০১২৩৪৫৬৭৮৯]+\.[০১২৩৪৫৬৭৮৯]+|[০১২৩৪৫৬৭৮৯]+(注意原表达式中未转义的.会匹配任意字符,需修正为\.)会误匹配与孟加拉语字母(如তম、টি)衔接的数字(例如২১তম中的২১、১০টি中的১০),需求是仅匹配独立的纯孟加拉数字(如১০৫、৭৬)和带小数点的孟加拉数字(如১০৫.৫৬),排除与指定孟加拉语字符/词汇衔接的数字。

修正后的正则表达式

(?<!তম|টি|[\p{Bengali}])[০১২৩৪৫৬৭৮৯]+(?:\.[০১২৩৪৫৬৭৮৯]+)?(?![\p{Bengali}])

规则解释

  • (?<!তম|টি|[\p{Bengali}]):负向回顾后瞻,确保数字前不是指定的孟加拉语词汇(তম、টি)或任意孟加拉语字符,避免匹配前缀衔接的数字
  • [০১২৩৪৫৬৭৮৯]+:匹配1个及以上孟加拉数字
  • (?:\.[০১২৩৪৫৬৭৮৯]+)?:可选的小数部分,(?:...)为非捕获组,\.匹配小数点,后续匹配1个及以上孟加拉数字,?表示该部分可省略
  • (?![\p{Bengali}]):负向先行断言,确保数字后不是任意孟加拉语字符,避免匹配后缀衔接的数字

测试验证

在regex101.com选择**PCRE2(PHP >=7.3)**引擎测试:

  • 匹配成功的示例:১০৫、৭৬、১০৫.৫৬、৪৫.৭
  • 匹配被排除的示例:২১তম(不会捕获২১)、১০টি(不会捕获১০)

内容的提问来源于stack exchange,提问作者Ishrat Hossain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 07:42:50