求一个正则表达式批量删除文本里日期和时间的代码?(需要删除的日期和时间数字都不一样)
我想把多篇txt文章当中的日期和时间都删除掉,应该咋办呀?日期和时间自己占一行,能不能批量删除这一行呀?(时间和数字没规律)注意批量替换删除的文字如下:正文1日期:201...
我想把多篇txt文章当中的日期和时间都删除掉,应该咋办呀?
日期和时间自己占一行,能不能批量删除这一行呀?(时间和数字没规律)
注意批量替换删除的文字如下:
正文1
日期:2010-07-24 00:40:11 (这一行都不要了,批量删除掉)
正文2
日期:2010-05-14 00:41:10 (这一行都不要了,批量删除掉)
正文3
日期:2010-05-25 21:37:33 (这一行都不要了,批量删除掉)
正文4
日期:2010-11-25 12:15:20 (这一行都不要了,批量删除掉)
需要说明的是.需要删除的日期和时间数字都不一样,应该咋办呀?????????
唯一相同的是每行都有日期这两个字.(也删除)
文档有130多个最好能批量处理!所以求一个正则表达式批量替换的代码或者批处理也行呀!!!!!
我在这里先谢谢各位了?我有正则表达式批量替换软件,就是不会用正则表达式批量替换日期和时间?
用正则表达式批量删除文本里日期和时间的代码?
我用的是超级批量文本替换5.0
正确答案:
删除文本中的日期为:例如----2010-07-24
代码如下:
([0-9][0-9]-[0-9][0-9]-[0-9][0-9])<特别说明,会剩下数字20没有替换)
删除文本中的时间为:例如----21:37:04
代码如下:
([0-9][0-9]:[0-9][0-9]:[0-9][0-9])
合起来就是:
第一步:用正则表达式批量删除文本里的日期:例如---日期:2010-07-24
([0-9][0-9]-[0-9][0-9]-[0-9][0-9])
第二步:用正则表达式批量删除文本里的时间:例如-----21:37:04
([0-9][0-9]:[0-9][0-9]:[0-9][0-9])
第三步:你打开文本会发现需要删除的东西只剩下------日期:20
用一般性文本替换掉以下文字即可:
日期:20
现在的问题是需要花费三步骤才能搞定:
日期:2010-05-25 21:37:33 (这一行都不要了,批量删除掉)
能不能用正则表达式一步搞定呀? 展开
日期和时间自己占一行,能不能批量删除这一行呀?(时间和数字没规律)
注意批量替换删除的文字如下:
正文1
日期:2010-07-24 00:40:11 (这一行都不要了,批量删除掉)
正文2
日期:2010-05-14 00:41:10 (这一行都不要了,批量删除掉)
正文3
日期:2010-05-25 21:37:33 (这一行都不要了,批量删除掉)
正文4
日期:2010-11-25 12:15:20 (这一行都不要了,批量删除掉)
需要说明的是.需要删除的日期和时间数字都不一样,应该咋办呀?????????
唯一相同的是每行都有日期这两个字.(也删除)
文档有130多个最好能批量处理!所以求一个正则表达式批量替换的代码或者批处理也行呀!!!!!
我在这里先谢谢各位了?我有正则表达式批量替换软件,就是不会用正则表达式批量替换日期和时间?
用正则表达式批量删除文本里日期和时间的代码?
我用的是超级批量文本替换5.0
正确答案:
删除文本中的日期为:例如----2010-07-24
代码如下:
([0-9][0-9]-[0-9][0-9]-[0-9][0-9])<特别说明,会剩下数字20没有替换)
删除文本中的时间为:例如----21:37:04
代码如下:
([0-9][0-9]:[0-9][0-9]:[0-9][0-9])
合起来就是:
第一步:用正则表达式批量删除文本里的日期:例如---日期:2010-07-24
([0-9][0-9]-[0-9][0-9]-[0-9][0-9])
第二步:用正则表达式批量删除文本里的时间:例如-----21:37:04
([0-9][0-9]:[0-9][0-9]:[0-9][0-9])
第三步:你打开文本会发现需要删除的东西只剩下------日期:20
用一般性文本替换掉以下文字即可:
日期:20
现在的问题是需要花费三步骤才能搞定:
日期:2010-05-25 21:37:33 (这一行都不要了,批量删除掉)
能不能用正则表达式一步搞定呀? 展开
3个回答
展开全部
最简单的正则 如 : \d-\d-\d
但是实际情况却不是那么简单,,要考虑,有效性和闰年等问题.....
对于日期的有效范围,不同的应用场景会有所不同。MSDN中定义的DateTime对象的有效范围是:0001-01-01 00:00:00到9999-12-31 23:59:59。
UNIX时间戳的0按照ISO 8601规范为 :1970-01-01T00:00:00Z。
先考虑与年份无关的前三条规则,年份可统一写作
(?!0000)[0-9]
下面仅考虑月和日的正则
1. 包括平年在内的所有年份的月份都包含1-28日
(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])
2. 包括平年在内的所有年份除2月外都包含29和30日
(0[13-9]|1[0-2])-(29|30)
3. 包括平年在内的所有年份1、3、5、7、8、10、12月都包含31日
(0[13578]|1[02])-31)
合起来就是除闰年的2月29日外的其它所有日期
(?!0000)[0-9]-((0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31)
接下来考虑闰年的实现
1 : 四年一闰
([0-9](0[48]|[2468][048]|[13579][26])
2 : 百年不闰,四百年再闰
(0[48]|[2468][048]|[13579][26])00
3 : 合起来就是所有闰年的2月29日
([0-9](0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29)
四条规则都已实现,且互相间没有影响,合起来就是所有符合DateTime范围的日期的正则
^((?!0000)[0-9]-((0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31)|([0-9](0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29)$
考虑到这个正则表达式仅仅是用作验证,所以捕获组没有意义,只会占用资源,影响匹配效率,所以可以使用非捕获组来进行优化。
^(?:(?!0000)[0-9]-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9](?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$
但是实际情况却不是那么简单,,要考虑,有效性和闰年等问题.....
对于日期的有效范围,不同的应用场景会有所不同。MSDN中定义的DateTime对象的有效范围是:0001-01-01 00:00:00到9999-12-31 23:59:59。
UNIX时间戳的0按照ISO 8601规范为 :1970-01-01T00:00:00Z。
先考虑与年份无关的前三条规则,年份可统一写作
(?!0000)[0-9]
下面仅考虑月和日的正则
1. 包括平年在内的所有年份的月份都包含1-28日
(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])
2. 包括平年在内的所有年份除2月外都包含29和30日
(0[13-9]|1[0-2])-(29|30)
3. 包括平年在内的所有年份1、3、5、7、8、10、12月都包含31日
(0[13578]|1[02])-31)
合起来就是除闰年的2月29日外的其它所有日期
(?!0000)[0-9]-((0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31)
接下来考虑闰年的实现
1 : 四年一闰
([0-9](0[48]|[2468][048]|[13579][26])
2 : 百年不闰,四百年再闰
(0[48]|[2468][048]|[13579][26])00
3 : 合起来就是所有闰年的2月29日
([0-9](0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29)
四条规则都已实现,且互相间没有影响,合起来就是所有符合DateTime范围的日期的正则
^((?!0000)[0-9]-((0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31)|([0-9](0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29)$
考虑到这个正则表达式仅仅是用作验证,所以捕获组没有意义,只会占用资源,影响匹配效率,所以可以使用非捕获组来进行优化。
^(?:(?!0000)[0-9]-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9](?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询