Problem creating a regular expression to parse open-iscsi, iscsiadm output (help?)
Andreas Perstinger
andipersti at gmail.com
Thu Jun 13 03:17:28 EDT 2013
On 13.06.2013 02:59, rice.cruft at gmail.com wrote:
> I am parsing the output of an open-iscsi command that contains
> severalblocks of data for each data set. Each block has the format:
[SNIP]
> I tried using \s* to swallow the whitespace between the to iSCSI
> lines. No joy... However [\s\S]*? allows the regex to succeed. But that
> seems to me to be overkill (I am not trying to skip lines of text here.)
> Also note that I am using \ + to catch spaces between the words. On the
> two problem lines, using \s+ between the label words fails.
Changing
> # Connection state
> iSCSI\ +Connection\ +State:\s+(?P<connState>\w+\s*\w*)
> [\s\S]*? <<<<<< without this the regex fails
> # Session state
> iSCSI\ +Session\ +State:\s+(?P<sessionState>\w+)
to
# Connection state
iSCSI\s+Connection\s+State:\s+(?P<connState>\w+\s*\w*)\s*
# Session state
iSCSI\s+Session\s+State:\s+(?P<sessionState>\w+)
gives me
>>> # 'test' is the example string
>>> myDetails = [ m.groupdict() for m in regex.finditer(test)]
>>> print myDetails
[{'initiatorIP': '221.128.52.214', 'connState': 'LOGGED IN', 'SID':
'154', 'ipaddr': '221.128.52.224', 'initiatorName':
'iqn.1996-04.de.suse:01:7c9741b545b5', 'sessionState': 'LOGGED_IN',
'iqn': 'iqn.1992-04.com.emc:vplex-000000008460319f-0000000000000007',
'tag': '7', 'port': '3260'}]
for your example (same for the original regex).
It looks like it works (Python 2.7.3) and there is something else
breaking the regex.
Bye, Andreas
More information about the Python-list
mailing list