【发布时间】:2017-08-09 12:42:19
【问题描述】:
我需要匹配如下字符串:'2017-08-09,08:59:20.445 INFO {peers_peak_parameters_grid} [eval_peers_peak] Evaluating batch 0 out of 2158',
我尝试过不同的正则表达式,例如:comp = re.compile("Evaluating batch ^[-+]?[0-9]+$ out of ^[-+]?[0-9]+$")
这是一个示例用法:
def get_batch_process_time(log):
loglines = log.splitlines()
comp = re.compile("Evaluating batch ^[-+]?[0-9]+$ out of ^[-+]?[0-9]+$")
times = []
matches = []
for i, line in enumerate(loglines):
if comp.search(line):
time = string2datetime(line.split(' ')[0])
times.append(time)
matches.append(line)
return np.array(times), matches
不幸的是,似乎没有一行与给定的模式匹配。我假设我使用了错误的正则表达式。
什么是正确的正则表达式?
我是否正确使用re? (我应该使用匹配而不是搜索吗?)
【问题讨论】:
-
您的字符串没有
out of。Evaluating batch [-+]?[0-9]+ out of [-+]?[0-9]+似乎可以工作。 -
抱歉问题中有错误。我已经编辑了示例字符串
-
使用这个模式:
Evaluating batch [0-9]{4} out of [0-9]{4} -
@hadi 如果批次少于 1000 或多于 9999 将不起作用;它甚至不适用于提供的示例,因为第一个数字是 0
-
@hadi 无需道歉,我们都会犯错 ;) 感谢您在外面帮助人们!