我有以下形式的多个字符串:

AM-2019-04-22 06-47-57865BCBFB-9414907A-4450BB24

而且我需要将日期部分替换为其他部分,例如:

AM-2019-07-22 06-47-57865BCBFB-9414907A-4450BB24

如何使用python和regex实现这一目标?

另外,我有多个文本文件包含类似于这样的行:

LocalTime: 21/4/2019 21:48:41

我需要做与上面相同的事情(用其他东西替换月份)。

分析解答

第一个例子:

import re
string = 'AM-2019-07-22 06-47-57865BCBFB-9414907A-4450BB24'
replace = '0'+str(int((re.match('(AM-\d{4}-)(\d{2})',string).group(2)))+2)

re.sub('(AM-\d{4}-)(\d{2})',r'\g<1>'+replace,string) #Replace 07 for 07 +2

输出:

Out[10]: 'AM-2019-09-22 06-47-57865BCBFB-9414907A-4450BB24'

对于第二个:

string2 = 'LocalTime: 21/4/2019 21:48:41'
replace = str(int((re.match(r'(LocalTime: \d{1,2}/)(\d{1,2}).*',string2).group(2)))+2)
re.sub('(Time: \d{2}/)(\d{1,2})',r'\g<1>'+replace,string2) #Replace 4 for 6

输出:

Out[14]: 'LocalTime: 21/6/2019 21:48:41'

如果要限制执行此操作的月份,可以使用if语句:

 if re.match('(AM-\d{4}-)(\d{2})',string).group(2).isin(['04','05','06']:

 if re.match(r'(LocalTime: \d{1,2}/)(\d{1,2}).*',string2).group(2).isin(['4','5','6']: