Skip to main content
 首页 » 编程设计

python之使用 findall() 和 search() 的奇怪正则表达式问题

2024年12月31日29yyy_WW

<分区>

我正在尝试使用 \w{2}\d/\d{1,2}(/\d{1,2})? 来匹配以下两个接口(interface)在 Cisco 交换机上:

Gi1/0/1

Fa0/1

  1. 当我使用 re.search() 时,它会返回所需的输出。

    import re 
    port = "Gi1/0/1 Fa0/1" 
    search = re.search(r'\w{2}\d/\d{1,2}(/\d{1,2})?', port) 
    print search.group() 
    

我得到 "Gi1/0/1" 作为输出。

  1. 当我使用 re.findall() 时

    import re 
    port = "Gi1/0/1 Fa0/1" 
    search = re.findall(r'\w{2}\d/\d{1,2}(/\d{1,2})?', port) 
    print search 
    

我得到了 "['/1', '']" 这是不希望的。

为什么 findall() 不返回 ['Gi1/0/1','Fa0/1']?

那是因为我使用了 (/\d{1,2})?,而 findall() 应该返回这部分吗?这是为什么?

我们如何使用 findall() 获取['Gi1/0/1','Fa0/1']?