正则表达式优化求助:如何匹配含任意分隔符的速度范围
速度范围匹配的正则表达式优化方案
核心优化点
针对数字间不同分隔符(中文“至”、英文“to”、连字符“-”等)的匹配需求,通过非捕获组涵盖所有可能的分隔形式,同时兼容分隔符前后的空白字符。
优化后的正则表达式
\d+\s*(?:至|to|-)\s*\d+\s?(km\/hr|km\/h|mph|kmph)
表达式拆解
\d+:匹配范围起始的一个或多个数字\s*:匹配分隔符前后0个或多个空白字符(兼容带空格或不带空格的格式)(?:至|to|-):非捕获组,匹配所有可能的分隔符,无需额外捕获该组内容\d+:匹配范围结束的一个或多个数字\s?:匹配数值与单位之间0个或1个空白字符(km\/hr|km\/h|mph|kmph):覆盖所有常见的速度单位类型
测试效果
用你的示例文本测试,可成功提取3个速度范围:
- 4至80 km/h
- 2至50 mph
- 2至50km/hr
同时也能匹配如“5 - 25 kmph”这类带连字符的格式。
内容的提问来源于stack exchange,提问作者Vishnoo Rath
相关产品推荐
相关产品推荐

