2024-04-19 17:21:31 发布
网友
我有一根像这样的绳子:
a = '2017-11-02T00:00:10'
我想匹配最后一个组,它是字符串中的10。在
10
所以,像这样:2017-11-02T00:00:和{}
2017-11-02T00:00:
我试了re.match(r':\d+$', a),re.match(r':00$', a),re.match(r':00+$', a)
re.match(r':\d+$', a)
re.match(r':00$', a)
re.match(r':00+$', a)
但似乎都不管用。有谁能解释一下为什么我的正则表达式不起作用,以及如何从字符串中捕获最后一个组?在
正则表达式通常不是最佳解决方案(就性能而言)。如果有做这项工作的工具,你应该使用它们。这是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
时间安排:
另请参见strftime() and strptime() Behavior。在
这是因为^{} implicitly anchors at the beginning of the string,这意味着只有匹配项出现在那里时才会成功。因为它锚定在字符串的开头而不是字符串的末尾,所以这种行为可能会令人困惑。您可能会发现始终使用re.search()而不是re.match(),并且在需要锚定时使用^和/或{}更简单。在
re.search()
re.match()
^
这个问题不需要正则表达式,可以用.split()轻松解决
a = '2017-11-02T00:00:10' milliseconds = a.split(':')[-1] print(milliseconds) >>>"10"
如果你真的想走慢得多的regex路径:
import re a = '2017-11-02T00:00:10' m = re.findall(r"\d+$", a) print(m[0]) >>>10
正则表达式通常不是最佳解决方案(就性能而言)。如果有做这项工作的工具,你应该使用它们。这是datetime.strptime是你的朋友:
时间安排:
^{pr2}$另请参见strftime() and strptime() Behavior。在
这是因为^{} implicitly anchors at the beginning of the string ,这意味着只有匹配项出现在那里时才会成功。因为它锚定在字符串的开头而不是字符串的末尾,所以这种行为可能会令人困惑。您可能会发现始终使用}更简单。在
re.search()
而不是re.match()
,并且在需要锚定时使用^
和/或{这个问题不需要正则表达式,可以用.split()轻松解决
时间安排:
^{pr2}$如果你真的想走慢得多的regex路径:
相关问题 更多 >
编程相关推荐