我需要匹配以下字符串:'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
吗? (我应该使用匹配而不是搜索?)
答案 0 :(得分:2)
^[-+]?[0-9]+$
将匹配整个字符串,该字符串由可选的加号或减号操作组成,然后是非空的数字序列。
当我说一整个字符串时,因为^
和$
是"锚点"这将分别匹配字符串的开头和结尾,这就是你的正则表达式无法工作的原因。
我想你也可以删除可选的标志部分,即[-+]?
。
您可以通过在regex101(请查看右上角的说明面板)或类似实用程序中测试您的正则表达式来自行找到答案。