Notepad++正则匹配2000-2023年月开头整行的问题排查
正则问题分析与解决
需求与测试数据
需要在Notepad++中用正则选中左侧以2000-2023年加月份开头的整行数字,测试数据如下:
20110512192714 20794709157481 20121203175303 20794709157481 20210131201708 20211101050154 20220501022609 79776361952441
用户尝试的正则:
20(?:0[0-9]|1[0-9]|20)[0-1][0-9]
存在两个问题:
- 仅匹配行内部分内容,无法选中整行(数字长度不一致)
- 无法匹配20211101050154、20220501022609这类行
现有正则的问题点
- 年份范围限制过窄:正则里的
20(?:0[0-9]|1[0-9]|20)只能匹配2000-2020年,2021、2022、2023完全不在匹配范围内,这就是2021/2022开头的行无法命中的核心原因。 - 无整行匹配规则:该正则只匹配了年份+月份的前6位字符,既没有指定行首(
^)和行尾($)边界,也没有处理年份月份之后的剩余数字,所以只会选中行内片段,而非完整一行。
修正后的正则
^20(?:0[0-9]|1[0-9]|2[0-3])[0-1][0-9]\d*$
正则各部分说明
^:锁定行首,确保匹配从每行开头开始20(?:0[0-9]|1[0-9]|2[0-3]):覆盖2000-2023年的所有年份,其中2[0-3]专门匹配2020-2023[0-1][0-9]:匹配月份(兼容01-12的有效格式)\d*:匹配年份月份之后的任意数量数字,适配不同长度的数字行$:锁定行尾,确保选中的是完整一行
Notepad++使用步骤
- 按
Ctrl+F打开查找对话框 - 切换到正则表达式模式
- 输入修正后的正则,点击「查找全部」即可选中所有符合条件的行
内容的提问来源于stack exchange,提问作者Pubg Mobile
相关产品推荐
相关产品推荐

