Python Regex匹配最后一组

2024-04-19 17:21:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一根像这样的绳子:

a = '2017-11-02T00:00:10'

我想匹配最后一个组,它是字符串中的10。在

所以,像这样:2017-11-02T00:00:和{}

我试了re.match(r':\d+$', a)re.match(r':00$', a)re.match(r':00+$', a)

但似乎都不管用。有谁能解释一下为什么我的正则表达式不起作用,以及如何从字符串中捕获最后一个组?在

  • 只要我能确认最后一毫秒等于10,输出就可以是宽松的

Tags: 字符串rematch绳子
3条回答

正则表达式通常不是最佳解决方案(就性能而言)。如果有做这项工作的工具,你应该使用它们。这是datetime.strptime是你的朋友:

>>> from datetime import datetime
>>> date = datetime.strptime('2017-11-02T00:00:10', '%Y-%m-%dT%H:%M:%S')
>>> date
datetime.datetime(2017, 11, 2, 0, 0, 10)
>>> date.second
10

时间安排:

^{pr2}$

另请参见strftime() and strptime() Behavior。在

这是因为^{} implicitly anchors at the beginning of the string,这意味着只有匹配项出现在那里时才会成功。因为它锚定在字符串的开头而不是字符串的末尾,所以这种行为可能会令人困惑。您可能会发现始终使用re.search()而不是re.match(),并且在需要锚定时使用^和/或{}更简单。在

这个问题不需要正则表达式,可以用.split()轻松解决

a = '2017-11-02T00:00:10'
milliseconds = a.split(':')[-1]
print(milliseconds)
>>>"10"

时间安排:

^{pr2}$

如果你真的想走慢得多的regex路径:

import re
a = '2017-11-02T00:00:10'

m = re.findall(r"\d+$", a)
print(m[0])
>>>10

相关问题 更多 >