我寻找类似的问题,但找不到确切的我需要什么。我有这串数据,举个例子:
2016 12
2017 01
2017 02
2017 03
2017 04
2017 05
2017 06
2017 07
2017 12
2018 01
2018 02
2018 03
2018 04
2018 05
2018 06
2018 07我只需要过滤一个选择的范围,在这个例子中,从2017\05到2018\04。我在用这个正则表达式:
((?=2017).*(?=0[5-9]|1[0-2]).*)|((?=2018).*(?=0[1-4]).*)这在2017年范围内运行良好,但仍将继续包括2018年至05年及其后。知道为什么会发生这种事吗?
发布于 2017-06-09 21:01:16
这将匹配在您的日期连续范围内的任何。
注意,这并不强制连续(上升)月/日,但必须是连续的一年,因为这是一个从-到的东西。
(?:2017[ ](?:0[5-9]|1[0-2])\r?\n)+(?:2018[ ]0[1-4](?:\r?\n|$))+
https://regex101.com/r/SDwLx0/1
扩容
(?:
2017 [ ] # 2017
(?: 0 [5-9] | 1 [0-2] ) # 05 - 12
\r? \n
)+
(?:
2018 [ ] # 2018
0 [1-4] # 01 - 04
(?: \r? \n | $ )
)+发布于 2017-06-09 22:24:58
知道为什么会发生这种事吗?
模式的下半部分((?=2018).*(?=0[1-4]).*)将像这样匹配(使用_可视化空格):
行2018_01**:**的
(?=2018)匹配2018
.*匹配2018_
(?=0[1-4])匹配01
.*匹配01
行2018_05**:**的
(?=2018)匹配2018
.*匹配2
(?=0[1-4])匹配01 (2018年中间两位数)
.*匹配018_01
https://stackoverflow.com/questions/44466271
复制相似问题