Python中匹配分数且排除日期格式的正则表达式如何实现
正则匹配分数(忽略日期格式)解决方案
实现思路
我们需要匹配仅含1个斜杠的x/y数字格式,同时排除包含2个斜杠的dd/mm/yyyy类日期片段即可,核心通过断言控制匹配片段前后不会出现额外斜杠,避免匹配到日期中的局部片段。
可用正则表达式
/(?<!\/)\b\d+\/\d+\b(?!\/)/g
各部分释义:
(?<!\/)负向后行断言:确保匹配的内容前没有斜杠,不会匹配到日期格式里的xx/xx后缀片段\b单词边界:确保匹配的是独立的数字+斜杠片段,不会误匹配到夹杂在其他字符中的内容\d+\/\d+核心匹配规则:匹配「1个以上数字 + 斜杠 + 1个以上数字」的分数格式(?!\/)负向前瞻断言:确保匹配的内容后没有斜杠,不会匹配到日期格式里的xx/xx前缀片段
使用示例(JavaScript环境)
const testStr = "1/4 test test is the date for 2021/12/31, 1/3 1/5"; const scoreRegex = /(?<!\/)\b\d+\/\d+\b(?!\/)/g; const matchResult = testStr.match(scoreRegex); console.log(matchResult); // 输出:["1/4", "1/3", "1/5"]
兼容低版本环境方案
如果运行环境不支持后行断言,可以先把所有含两个斜杠的日期类片段替换移除,再匹配剩余的分数格式:
const testStr = "1/4 test test is the date for 2021/12/31, 1/3 1/5"; // 先移除所有三个数字段用两个斜杠连接的日期格式 const strWithoutDate = testStr.replace(/\d+\/\d+\/\d+/g, ''); const matchResult = strWithoutDate.match(/\b\d+\/\d+\b/g); console.log(matchResult); // 输出同样为 ["1/4", "1/3", "1/5"]
内容的提问来源于stack exchange,提问作者user16959726
相关产品推荐
相关产品推荐

