如何通过正则精准匹配安装包的2位数字+点+1位数字基准版本号?
解决方法
修正正则表达式
你的问题出在原正则两个关键问题上:一是.没转义(正则里.是匹配任意字符的通配符),二是没做位置限制,导致从年份里误匹配了内容。给你两个靠谱的方案:
方案1:按固定命名规则精准匹配
如果安装包命名规则固定,基准版本号总是紧跟在Houdini_后面,用这个正则最稳妥:
Houdini_(\d{2}\.\d)
提取这个正则的捕获组1,就能直接拿到19.5。
方案2:通用匹配目标格式
要是需要不依赖命名规则,只抓“两位数字+点+一位数字”的内容,同时避开年份这类多位数的干扰,用带断言的正则:
(?<!\d)\d{2}\.\d(?!\d)
简单说下这个正则的作用:
(?<!\d):保证匹配的两位数字前面没有其他数字,避免从2022.1里截出22.1\d{2}\.\d:核心匹配“两位数字+点+一位数字”的格式(?!\d):保证匹配的一位数字后面没有其他数字,不会把19.5.493里的多余数字带进来
验证结果
用你的测试字符串Octane_2022.1.0.6_Houdini_19.5.493_OSX.zip测试:
- 方案1精准定位
Houdini_后的版本,直接得到19.5 - 方案2也能正确匹配到
19.5,不会误碰年份部分
内容的提问来源于stack exchange,提问作者Derek Edwards
相关产品推荐
相关产品推荐

