我需要匹配如下字符串:'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-9]+$
就可以匹配一个由可选加号或减号操作组成的整个字符串,然后是一个非空的数字序列。在当我说一个完整的字符串时,这是因为
^
和$
是分别匹配字符串开头和结尾的“锚点”,这就是正则表达式不起作用的原因。在我想你也可以去掉可选的符号部分,即
[-+]?
。在您可以通过在regex101(检查右上角的解释面板)或类似的实用程序测试正则表达式来自己发现这一点。在
相关问题 更多 >
编程相关推荐