python使用integ重新匹配字符串

2024-04-19 21:46:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要匹配如下字符串:'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正确吗?(我应该使用匹配而不是搜索?)在


Tags: ofrelogtimebatchlineoutmatches
1条回答
网友
1楼 · 发布于 2024-04-19 21:46:16

^[-+]?[0-9]+$就可以匹配一个由可选加号或减号操作组成的整个字符串,然后是一个非空的数字序列。在

当我说一个完整的字符串时,这是因为^$是分别匹配字符串开头和结尾的“锚点”,这就是正则表达式不起作用的原因。在

我想你也可以去掉可选的符号部分,即[-+]?。在

您可以通过在regex101(检查右上角的解释面板)或类似的实用程序测试正则表达式来自己发现这一点。在

相关问题 更多 >