提问人:Pubg Mobile 提问时间:11/12/2023 更新时间:11/12/2023 访问量:33
为以年和月开头的行添加书签
Bookmark lines that start with a year and month
问:
我有一个列表,如下所示:
20110512192714
20794709157481
20121203175303
20794709157481
20210131201708
20211101050154
20220501022609
79776361952441
现在我想通过正则表达式从记事本++的左侧选择以年份和月份开头的行。
请注意,年份必须从 2000 年到 2023 年开始。
我尝试了以下正则表达式:
20(?:0[0-9]|1[0-9]|20)[0-1][0-9]
上面的正则表达式工作正常,但有两个问题:
无法选择整行目标和选择目标线的一部分。 (有时可能数字的长度不一样)
它无法选择 有些行如下:
20211101050154
20220501022609
我的正则表达式问题在哪里?
答:
1赞
The fourth bird
11/12/2023
#1
您的模式匹配:20(?:0[0-9]|1[0-9]|20)[0-1][0-9]
20 后跟范围 00-09 或范围 10-19 或 20,后跟 00-19 或 01-19
如果您想匹配以 2000 - 2023 开头且仅包含数字的行:
^20(?:2[0-3]|[01]\d)\d*$
如果要将 1 到 12 之间的月份与可选的前导零匹配:
^20(?:2[0-3]|[01]\d)(?:0?[1-9]|1[012])\d*$
年份模式匹配:
^
字符串的开头20
从字面上匹配(?:
备选方案的非捕获组2[0-3]
比赛 20, 21, 22, 23|
或[01]\d
比赛从 00 到 19
)
关闭非捕获组\d*
匹配可选数字$
字符串末尾
观看正则表达式演示。
如果要匹配可以包含任何字符的行的其余部分,可以将模式的最后一部分从 更改为\d*$
.*
评论
^20(?:2[0-3]|[01]\d)
^20(?:2[0-3]|[01]\d)\d*$
^20(?:2[0-3]|[01]\d).*