我想使用python re module从此cisco配置匹配expression_A AND expression_B。
我的逻辑:
expression_A = "permit tcp 96.0.0.0 0.255.255.255 any eq www"
expression_B = "permit tcp 98.0.0.0 0.255.255.255 any eq telnet"
如果匹配expression_A AND expression_B则打印一些东西。
配置文件:
interface Serial1/3
no ip address
shutdown
serial restart-delay 0
!
!
!
no ip http server
no ip http secure-server
!
access-list 101 permit tcp 96.0.0.0 0.255.255.255 any eq www
access-list 101 permit tcp 98.0.0.0 0.255.255.255 any eq telnet
!
!
!
control-plane
!
!
line con 0
exec-timeout 0 0
logging synchronous
stopbits 1
line aux 0
stopbits 1
line vty 0 4
login local
transport input all
-----------
答案 0 :(得分:1)
这并不需要正则表达式,因为position: relative
运算符就足够了:in
检查一个字符串是否包含另一个字符串。当我们将in
与in
结合使用时,我们可以使用此代码检查您的配置字符串是否包含两个表达式:
and
答案 1 :(得分:0)
正如卡西米尔在评论中提到的,你不需要在这里使用RE。
with open('config.txt', 'r') as config_file:
config = config_file.read()
if expression_A in config and expression_B in config:
print("something")
答案 2 :(得分:0)
虽然正则表达式不是必须匹配常量字符串,正如其他人所说,你可以实现“字符串匹配这个 AND “逻辑使用正则表达式前瞻,格式为:(?=.*this)(?=.*that)
,所以:
(?=.*permit tcp 96\.0\.0\.0 0\.255\.255\.255 any eq www)(?=.*permit tcp 98\.0\.0\.0 0\.255\.255\.255 any eq telnet) //singleline
只有在存在BOTH字符串时才会匹配(顺序无关紧要)。