帮助需要在可选条件下编写正则表达式[关闭]

时间:2011-09-13 12:14:02

标签: python regex

我有一个包含如下

的日志文件

登录=

       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'}

由于警告是可选的,所以我应该如何处理它。我在写正则表达方面不擅长。请建议我使用正则表达式获得高手的任何好例子或链接。

2 个答案:

答案 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