On Wed, 2009-09-16 at 11:03 +0530, Jain, Vaibhav (GE Healthcare) wrote:
Hi,
I am using a python parser for parsing the incoming message from syslog-ng. In my log messages some fields are optional and some are not.I want to know how to handle these optional parameters in the python regual expression.
Your question is about python not syslog so you might have more luck from a python forum/mailing list. Having said that, the standard way of making a group optional in a regex is to add ? after it e.g. \d(\w+)? means a single digit followed by and optional string of word characters. Here's a small snippet I whipped up based on your example data. --- import re; data = ['Sep 15 22:23:37 ecis007 codeSystemName=5 UserID="Admin"', 'Sep 15 22:23:37 ecis007 UserID="Admin"'] r = re.compile (r'(\w+)\s+(\d+)\s+(\d\d:\d\d:\d\d)\s+([^\s]+)\s+(codeSystemName=(\d+)\s+)?(.*)') for d in data: print "d="+d m = r.match(d); if m: print repr(m.groups()) --- # python test.py d=Sep 15 22:23:37 ecis007 codeSystemName=5 UserID="Admin" ('Sep', '15', '22:23:37', 'ecis007', 'codeSystemName=5 ', '5', 'UserID="Admin"') d=Sep 15 22:23:37 ecis007 UserID="Admin" ('Sep', '15', '22:23:37', 'ecis007', None, None, 'UserID="Admin"')
participants (1)
-
chris packham