0
我有下面的代码:Python的正则表达式搜索字符串
def ospf_route_type_E2_exists(nbr_output,AS_ext_net_list,net_list):
match_list=[]
if type(AS_ext_net_list) is not list:
AS_ext_net_list=[AS_ext_net_list]
if type(net_list) is not list:
net_list=[net_list]
for ext_net,net in zip(AS_ext_net_list,net_list):
net_prefix=str(net).rstrip(".0")
match= re.search(r"O[" "]+E2[" "]+str\(ext_net\)[" "]+\[[0-9]*[0-9]*[0-9]+\/[0-9]+\][" "]+via[" "]+str(net_prefix)",nbr_output)
match_list.append(match)
if any(item for item in match_list):
print "AS External networks properly advertised via correct areas"
return 1
else:
print "AS External networks not properly advertised via correct areas"
return 0
的nbr_ouput下面包含:
show ip route ospf
O IA 192.168.42.0/24 [110/2] via 192.168.43.4, 00:00:29, FastEthernet0/0
O 192.168.124.0/24 [110/2] via 192.168.43.4, 00:00:29, FastEthernet0/0
10.0.0.0/24 is subnetted, 1 subnets
O E2 10.1.1.0 [110/1] via 192.168.43.4, 00:00:29, FastEthernet0/0
我要搜索的行:
O E2 10.1.1.0 [110/1] via 192.168.43.4, 00:00:29, FastEthernet0/0
使用如我的代码中的匹配行:
match= re.search(r"O[" "]+E2[" "]+str\(ext_net\)[" "]+\[[0-9]*[0-9]*[0-9]+\/[0-9]+\][" "]+via[" "]+str(net_prefix)",nbr_output)
预期输出:
print "AS External networks properly advertised via correct areas"
return 1
输出,我得到:
print "AS External networks not properly advertised via correct areas"
return 0
,告诉我,我的正则表达式搜索无法正常工作。请让我知道我做错了
为什么你在'[“”]'中有引号?您尝试匹配的字符串中没有引号。 – Barmar
您可以使用'\ d'来匹配数字而不是'[0-9]'。 '[0-9] * [0-9] * [0-9] +'没有意义重复它们,它应该是'[0-9] +'。 – Barmar
我试图匹配至少一个或多个空格。我做错了吗?它应该只是'[] +'?除此之外,一切都很好? –