我正在尝试使用Python在一行中找到一个时间戳,我有以下代码,我从SO和Python Docs获得,但它似乎没有找到所需的子字符串。
import re
line = "Jan 3 07:57:39 Kali sshd[1397]: Failed password for root from 172.16.12.55 port 34380 ssh2"
regex = "[0-9]{2}:[0-9]{2}:[0-9]{2}"
p = re.compile(regex)
m = p.match(line)
print m
# Output: None
我的目标是根据提供的regex
从行中提取时间戳。
谢谢。
重复:问题(这是重复的)提供了我的问题的答案,但它仍然是一个不同的问题。我认为将来最好不要考虑像我这样的人,因为我无法通过Python手册&找到答案 * QUICKLY * 以前的SO问题。
答案 0 :(得分:4)
您可以使用re.findall
:
import re
line = "Jan 3 07:57:39 Kali sshd[1397]: Failed password for root from 172.16.12.55 port 34380 ssh2"
new_line = re.findall('^[a-zA-Z]+\s+\d+\s+[\d\:]+', line)[0]
输出:
'Jan 3 07:57:39'
答案 1 :(得分:3)
您应该尝试re.findall
import re
line = "Jan 3 07:57:39 Kali sshd[1397]: Failed password for root from172.16.12.55 port 34380 ssh2"
pattern = "[0-9]{2}:[0-9]{2}:[0-9]{2}"
matches = re.findall(pattern, line)
for match in matches:
print(match)