import re
#example
input_text = 'Alrededor de las 00:16 am o las 23:30 pm , quizas cerca del 2022_-_02_-_18 llega el avion, pero no a las (2022_-_02_-_18 00:16 am), de esos hay dos (22)'
identify_time_regex = r"(?P<hh>\d{2}):(?P<mm>\d{2})[\s|]*(?P<am_or_pm>(?:am|pm))"
restructuring_structure_00 = r"(\g<hh>----\g<mm>----\g<am_or_pm>)"
#replacement
input_text = re.sub(identify_regex_01_a, restructuring_structure_00, input_text)
print(repr(input_text)) # --> output
我必须修改这个正则表达式identify_time_regex
,以便它提取小时数,但前提是它必须在如下结构(2022_-_02_-_18 00:16 am)
中,该结构可以概括为:r"(\d*_-_\d{2}_-_\d{2}) " + identify_time_regex
我需要的输出,您可以看到只有那些小时被修改,其中没有日期之前:
input_text = 'Alrededor de las 00----16----am o las 23----30----pm , quizas cerca del 2022_-_02_-_18 llega el avion, pero no a las (2022_-_02_-_18 00:16 am), de esos hay dos (22)'
1条答案
按热度按时间cgh8pdjw1#
您可以使用
请参阅Python demo。
逻辑如下:如果
(\b\d{4}_-_\d{2}_-_\d{2}\s+)?
可选捕获组匹配,则替换是整个匹配(即,不发生替换),并且如果不匹配,则发生替换。restructuring_structure_00
必须是lambda表达式,因为在替换之前需要计算匹配结构。\b\d{4}_-_\d{2}_-_\d{2}\s+
模式匹配单词边界、四位数字、_-_
、两位数字、_-_
、两位数字以及一个或多个空格。