在python脚本中使用正则表达式获取多关键字搜索结果

在python脚本中使用正则表达式获取多关键字搜索结果,python,regex,Python,Regex,我刚开始学习python和正则表达式 如果一行中有多个关键字匹配,如何从日志文件中获得行的输出 例如:获取以“5”开头并带有时间戳“2014/05/12 02:30:00”的行?在这里,我必须附加这两条信息,并通过读取整个日志文件获得满足它的行数 关键字在日志文件中用逗号分隔-这是文件的一行: 5,14/05/0202:30:00,1,1,94776082043,94776082043,0,1,77100,0,1,77100,,14/05/02 02:30:00,9477000003,,,,,1

我刚开始学习python和正则表达式

如果一行中有多个关键字匹配,如何从日志文件中获得行的输出

例如:获取以“5”开头并带有时间戳“2014/05/12 02:30:00”的行?在这里,我必须附加这两条信息,并通过读取整个日志文件获得满足它的行数

关键字在日志文件中用逗号分隔-这是文件的一行:

5,14/05/0202:30:00,1,1,94776082043,94776082043,0,1,77100,0,1,77100,,14/05/02 02:30:00,9477000003,,,,,19,14/05/05 02:30:00,0,0,9477000007,9477000003,false,,,,,,,,true,,,0,,5011405020230005752,
以下是我已经拥有的代码,我想对其进行改进:

#!/usr/bin/env python

import re

path = raw_input("Enter path to log file \n")
#/home/harzyne/pythonscripts/smsc_log.old
log = open(path)

count = 0

start = raw_input("Enter Start_Time in format(hh:mm:ss) ")
print(start)
end = raw_input("Enter End_Time in format(hh:mm:ss)")
print(end)

for line in log:
    if re.search('^5', line) :
        count +=1
print count

将正则表达式扩展为这样对您的行有效吗?我只是包括时间戳

re.search('^5.*?14/05/0202:30:00',line)
或者,如果只想查看下一个字段,只需将
*?
替换为逗号:

re.search('^5,14/05/0202:30:00',line)

你能举一个日志行的例子吗?这是日志文件中的一行:5,14/05/0202:30:00,1,19477608204394776082043,0,177100,0,177100,14/05/02:30:00947700003,,,,,,,,,,,,19,14/05/05 02:30:00,0,09477000007947700003,false,,,,,,,,,,true,,,,,,0,,5011405020230005752,对不起,我是一个初学者。。。这是“\/”表示“运算符”还是“运算符”??如果日志行同时包含“5”和“timestamp”,则只应对该行计数。我不必要地转义了:和/它。我把它拿走了。如果使用可以解释为特殊正则表达式字符的字符,则需要对其进行转义。当我在发展的时候,我有一个习惯,就是逃避这些角色而不是需要的角色,然后再修复它,就这样。谢谢!!顺便说一句,如果这些时间戳必须作为用户输入的话。。那我怎么能把它加入正则表达式呢??(请检查我上面的代码)如果您要查找特定的时间戳,您可以格式化字符串。”^5、{timestamp}.format(timestamp='14/05/0202:30:00')或者您可能必须确保该值的格式完全正确OK谢谢您:)如果我想连接用户输入(例如,上面代码中的“start”变量),如何操作?它像“(^5.+开始)”吗?但这个加号对我不起作用。但谷歌搜索的结果是这样的:(