On 08.10.2013 08:33, Sam Giraffe wrote:
#this is a single line string = '192.168.122.3 - - [29/Sep/2013:03:52:33 -0700] "GET / HTTP/1.0" 302 276 "-" "check_http/v1.4.16 (nagios-plugins 1.4.16)"'#trying to break up the pattern match for easy to read code pattern = re.compile(r'(?P<ip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s+' r'(?P<ident>\-)\s+' r'(?P<username>\-)\s+' r'(?P<TZ>\[(.*?)\])\s+' r'(?P<url>\"(.*?)\")\s+' r'(?P<httpcode>\d{3})\s+' r'(?P<size>\d+)\s+' r'(?P<referrer>\"\")\s+' r'(?P<agent>\((.*?)\))')
[SNIP]
The python interpreter is skipping to the 'math = re.search' and then the 'if' statement right after it looks at the <ip>, instead of moving onto <ident> and so on.
I'm not sure if I understand your problem, but your regex pattern only matches up to the size. When you look for the referrer, the pattern expects two quotes but in your string you have "-" (quote, dash, quote). Thus there is no match (i.e. "match" is None) and the if-statement will print "not found".
Bye, Andreas -- https://mail.python.org/mailman/listinfo/python-list
