预期的句子类型:
我今天晚些时候会在4:15
我今天晚些时候会在14:06
到那里。
那里很少有人注意到:
1-小时格式为24小时
2-小时可以是一个字母或2,而分钟总是2。
3-时间总是在句子中间。
我的尝试:
import re
response = re.sub(r'^(([01]\d|2[0-3]):([0-5]\d)|24:00)$',
'7:15', 'I will be there at `4:15` later today')
我也试过这个正则表达式^(2[0-3]|[01]?[0-9]):([0-5]?[0-9])$
它也没用。
答案 0 :(得分:1)
这里有几个问题,但这有效:
import re
response = re.sub(r'(?:[01]?\d|2[0-3]):(?:[0-5]\d)|24:00', '7:15', 'I will be there at `4:15` later today')
print(response)
这会产生
I will be there at `7:15` later today
你需要摆脱锚点,并使用[01]
使?
成为可选项。最后,将括号更改为非捕获并删除不必要的括号。
答案 1 :(得分:0)
我会使用不同的正则表达式:(0*[1-9]|1[0-9]|2[0-3]):[0-5][0-9]|24:00
,这是Regular expression for matching HH:MM time format
import re
response = re.sub(r'(0*[1-9]|1[0-9]|2[0-3]):[0-5][0-9]|24:00',
'7:15',
'I will be there at `4:15` later today')
print(response)
在你给出的例子中,时间总是放在两个`中。如果在给定时间内始终如此,则可以将正则表达式简化为
import re
response = re.sub(r'`.+`',
'7:15',
'I will be there at `24:00` later today')
print(response)
答案 2 :(得分:0)
您可以尝试使用此模式的简单方法:
import re
pattern=r'\d{1,2}:\d{2}'
text='I will be there at 4:15 later today'
match=re.findall(pattern,text)
print(match)
输出:
['4:15']