下面的代碼工作正常拆分蟒蛇正則表達式的代碼爲多行
#!/usr/bin/python3
import re
preflist = 'ip prefix-list PL_FROM_7600 seq 255 permit 192.168.0.0/15 ge 20 le 25'
mymatch = re.search(r'(ip prefix-list) (?P<prefname>\w+) (?P<prefseq>seq \d+) (permit|deny)', preflist)
print(mymatch)
if mymatch is not None:
print(mymatch.group('prefname'))
print(mymatch.group('prefseq'))
並打印這就證明我的正則表達式工作正常的情況如下:所以現在
[[email protected]:14:14:58~/scripts]$ ./retest.py
<_sre.SRE_Match object; span=(0, 42), match='ip prefix-list PL_FROM_7600 seq 255 permit'>
PL_FROM_7600
seq 255
我試圖分裂這變成了多行(PEP8符合maximum 72 characters per line)使用re.VERBOSE
,但不斷收到錯誤。我已經嘗試幾乎所有的組合,包括re.compile
和使用原始或不。
這裏是我直接從python控制檯嘗試的例子;
>>> preflist = 'ip prefix-list PL_FROM_7600 seq 255 permit 192.168.0.0/15 ge 20 le 25'
>>> myregex = re.compile(r'''
... (ip prefix-list)
... (?P<prefname>\w+)
... (?P<prefseq>seq \d+)
... (permit|deny)
... ''', re.VERBOSE)
>>> myregex
re.compile('\n(ip prefix-list)\n(?P<prefname>\\w+)\n(?P<prefseq>seq \\d+)\n(permit|deny)\n', re.VERBOSE)
>>> x = myregex.search(preflist)
>>> x
>>> print(x)
None
,我曾嘗試另一個例子......
>>> mypattern ='''
... (ip prefix-list)
... (\s?P<prefname>\w+)
... (\s?P<prefseq>seq \d+)
... (\spermit|deny)
... '''
>>> mypattern
'\n(ip prefix-list)\n(\\s?P<prefname>\\w+)\n(\\s?P<prefseq>seq \\d+)\n(\\spermit|deny)\n'
>>> preflist = 'ip prefix-list PL_FROM_7600 seq 255 permit 192.168.0.0/15 ge 20 le 25'
>>> preflist
'ip prefix-list PL_FROM_7600 seq 255 permit 192.168.0.0/15 ge 20 le 25'
>>> mymatch = re.search(mypattern, preflist,re.VERBOSE)
>>> mymatch
>>> print(mymatch)
None
>>>
你在模式中有字面空格,用'\ s'或'\ s +'替換它們(見'seq \ d +')。 –