On Thursday, April 30, 2015 at 12:42:18 AM UTC+4, Kashif Rana wrote: > Hello Experts > > I have below lines with some variations. > > 1- set policy id 1000 from "Untrust" to "Trust" "Any" "1.1.1.1" "HTTP" nat > dst ip 10.10.10.10 port 8000 permit log > > 2- set policy id 5000 from "Trust" to "Untrust" "Any" "microsoft.com" "HTTP" > nat src permit schedule "14August2014" log > > 3- set policy id 7000 from "Trust" to "Untrust" "Users" "Any" "ANY" nat src > dip-id 4 permit log > > 4- set policy id 7000 from "Trust" to "Untrust" "servers" "Any" "ANY" deny > > Please help me to write the regular expression to extract below information > in parenthesis, if exist from each line. Please note that some items may > exist or not like nat or log > > set policy id (id) from (from) to (to) (source) (destination) (service) nat > (src or dst) (dip-id 4) or (ip 10.10.10.10) port (dst-port) (action) schedule > (schedule) (log)
I tried below re and its not working. id\s(?P<p_id>.+?)(?:\sname\s(?P<p_name>.+?))?\sfrom\s(?P<p_from>.+?)\sto\s(?P<p_to>.+?)\s{2}(?P<p_src>[^\s]+?)\s(?P<p_dst>[^\s]+?)\s(?P<p_port>[^\s]+?)(?:\s(?P<p_nat_status>nat)\s(?P<p_nat_type>\w+)(\s?P<p_nat_src_ip>dip-id\s\d+)?(\sip\s(?P<p_nat_dst_ip>[\d\.]+)\sport(?P<dst_nat_port>\d+))?)?\s(?P<p_action>[^\s]+?)(?:\sschedule\s(?P<p_schedule>[^\s]+?))?(?P<p_log_status>\slog)?$ If I ignore the line 1. I made below re and its working and giving me all info. pol_elements = re.compile('id\s(?P<p_id>.+?)(?:\sname\s(?P<p_name>.+?))?\sfrom\s(?P<p_from>.+?)\sto\s(?P<p_to>.+?)\s{2}(?P<p_src>[^\s]+?)\s(?P<p_dst>[^\s]+?)\s(?P<p_port>[^\s]+?)(?:(?P<p_nat_status>\snat)\s(?P<p_nat_type>[^\s]+?)(?P<p_nat_ip>\sdip-id\s[^\s]+?)?)?\s(?P<p_action>[^\s]+?)(?:\sschedule\s(?P<p_schedule>[^\s]+?))?(?P<p_log_status>\slog)?$' ) -- https://mail.python.org/mailman/listinfo/python-list