我有一个包含如下
的日志文件登录=
Using data from (yyyy/mm/dd): 2011/8/3
0 files queued for scanning.
Warning: E:\test\Händler.pdf File not Found.
Loading com, please wait.
1520 file scanned.
我想编写一个正则表达式来检测警告消息,因为这是可选的警告,有时我会将基本的重复数据写入必须的数据。
logd = re.compile("Using\sdata\sfrom\s\(yyyy/mm/dd\):\s(? P<Defs_Date>\d{4}/\d+/\d+)[^\w\d] ")
data = Re.search(logd, log).groupdict()
输出将是:
{'Defs_Date': '2011/8/3'}
由于警告是可选的,所以我应该如何处理它。我在写正则表达方面不擅长。请建议我使用正则表达式获得高手的任何好例子或链接。
答案 0 :(得分:1)
处理可选部分的一种方法是使用regex text (optional part|)
。括号内的部分将匹配“可选部分”(可以单独使用正则表达式)或不匹配。
答案 1 :(得分:0)
以下对我来说很好:
txt = open("test.txt").read()
print txt
import re
logdate = re.compile("Using.*: (?P<date>\d{4}/\d+/\d+)")
logwarn = re.compile("Warning: (?P<warn>.*)")
dates = re.search(logdate, txt).groupdict()
warns = re.search(logwarn, txt).groupdict()
print dates
print warns