我有以下regex,它们似乎在regex101上运行良好。 如你所见,我的四种可能的组合是匹配的。在
现在,如果我想用python实现它,当我试图匹配一行类似于regex101字符串字段中的第一行(网络地址后面没有任何内容的行)时,根本找不到匹配。这是密码
import re
l_side = 'ip prefix-list PL_FROM_7600 seq 40 permit 192.168.10.0/23'
myregex = re.compile(r'''
(ip\sprefix-list)\s
(?P<prefnam>\w+)\s
(?P<prefseq>seq\s\d+)\s
(permit|deny)\s
(?P<prefnet>(?:[0-9]{1,3}\.){3}[0-9]{1,3}\/[1-3]?\d)\s
((?P<prefgele>ge\s\d{1,2}\sle\s\d{1,2})|
(?P<prefge>ge\s\d{1,2})|
(?P<prefle>le\s\d{1,2})|)
''', re.VERBOSE)
l_match = myregex.search(l_side)
print(l_match.group('prefnam'))
print(l_match.group('prefgele'))
这是我得到的错误
^{pr2}$如果我从正则表达式中删除下列内容
^{3}$那就行了。在
我在这里只想匹配gele
或le
或{
((?P<prefgele>ge\s\d{1,2}\sle\s\d{1,2})|
(?P<prefge>ge\s\d{1,2})|
(?P<prefle>le\s\d{1,2})|(.?))
你知道这是怎么回事吗
在塞缪尔的回答之后,我已经测试过了,但似乎所有的案例都不匹配
1和2匹配,但3和4不匹配
我已将Samuel regex修改为:
(ip\sprefix-list)\s
(?P<prefnam>\w+)\s
(?P<prefseq>seq\s\d+)\s
(permit|deny)\s
(?P<prefnet>(?:[0-9]{1,3}\.){3}[0-9]{1,3}(?:\/[1-3])?\d)
((\s(?P<prefgele>ge\s\d{1,2}\sle\s\d{1,2}))|
(\s(?P<prefge>ge\s\d{1,2}))|
(\s(?P<prefle>le\s\d{1,2})))?
现在看来所有的案子都是一样的。谢谢萨姆
用这个正则表达式?在
差异是为了
^{pr2}$替换为
在我换下
通过
相关问题 更多 >
编程相关推荐