python - 为什么我的时间替换正则表达式不起作用?

标签 python regex

预期的句子类型:

我将在今天晚些时候 4:15 到达

我将在今天晚些时候 14:06 到达。

有几点需要注意:

1- 小时格式为 24h

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])$ 而且它也没有用。

最佳答案

这里有几个问题,但这有效:

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

您需要去掉 anchor 并使用 ? 使 [01] 可选。最后,将括号更改为非捕获并删除不必要的括号。

关于python - 为什么我的时间替换正则表达式不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48092985/

相关文章:

python - 通过 Python 插入远程 Couchbase 服务器

c# - 复杂的正则表达式或字符串解析

正则表达式排除特定字符串,但不排除具有子字符串的字符串

正则表达式 - 如何在模式出现 X 次后匹配子字符串?

python - collective.googleanalytics 报告带有包含标签的过滤器

python - 尝试创建 python 程序,但使用 def 进行了简化

ruby - 用于匹配德国邮政编码但不匹配的正则表达式

php - 为给定的正则表达式创建一组所有可能的匹配项

python - spacy 标记化撇号

python - 如何更新 Mac 上 PyCharm 中运行的 pyspark 使用的 Java keystore ?