簡體   English   中英

Python正則表達式搜索字符串

[英]Python regular expression to search a string

我有以下代碼:

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

這告訴我我的正則表達式搜索不起作用。 請讓我知道我在做什么錯

我用了:

match= re.search(r"O\s+E2\s+"+str(ext_net)+"\s+\[[0-9]+\/[0-9]+\]\s‌​+via\s+"+str(net_pre‌​fix),nbr_output) 

而且有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM