正则表达式在第一场比赛后停止 - 我需要它继续

时间:2017-06-09 15:50:48

标签: python regex

我有这个正则表达式:

source_IP = re.findall(r':name\s+[\(]Anti-Spoof-firewallX-eth2-02[\)]\s+.*\s+.*\s+.*\s+.*\s+.*\s+.*\s+.*\s+.*\s+.*\s+.*\s+.*\s+.*\s+.*:Name\s+[\(](.*)+[\)]'

针对以下文字运行:

:name (Anti-Spoof-firewallX-eth2-02)
        )
        :ip_convention_object ()
        :color (black)
        :comments ()
        :group_convention_query ()
        :group_sort_type (3)
        :is_convention_on (false)
        :member_class (network_object)
        :members_query ()
        :type (group)
        : (ReferenceObject
            :Table (network_objects)
            :Name (n-10.10.24.0_s22)
            :Uid ("{DACDEBF9-C041-4C48-928E-92ECCC606CD5}")
        )
        : (ReferenceObject
            :Table (network_objects)
            :Name (n-10.1.90.0_s23)
            :Uid ("{3E947D4C-677-45B4-AFCC-553351A7F03E}")
        )
        : (ReferenceObject
            :Table (network_objects)
            :Name (n-100.141.28.0_s23)
            :Uid ("{3EE3901E-7490-4FDF-A66C-C452D17794}")
        )
        : (ReferenceObject
            :Table (network_objects)
            :Name (n-10.20.20.0_s22)
            :Uid ("{51EED8DA-BFDB-42CD-8C3B-71DRRR6111E}")
        )
        : (ReferenceObject
            :Table (network_objects)
            :Name (n-10.19.32.0_s23)
            :Uid ("{58CDB-6FDC-4F42-8F6B-3933428EB408}")
        )
        : (ReferenceObject
            :Table (network_objects)
            :Name (n-10.11.16.64_s27)
            :Uid ("{1D9A7204-ADE5-4414-B264-EA51A8TRE87}")
        )
    )

我需要所有的IP地址,但正则表达式只返回第一个(n-10.10.24.0s22)。我怎样才能纠正我的正则表达式?

1 个答案:

答案 0 :(得分:0)

您需要使用更简单的正则表达式,例如foreach($option as $k => $v) { $key = 'option_' . $k; $$key = $v; } echo $option_Size;

说明:

:Name\s+\(([^\)]+)\)找到:Name

Name:后跟一个或多个空格

\s+后跟\(

(捕获([^\)]+)内的所有内容;如果括号可能为空,则将()更改为+

*

结尾的

\)

findall的文档说:

  

返回字符串中pattern的所有非重叠匹配,作为字符串列表。从左到右扫描字符串,并按找到的顺序返回匹配项。如果模式中存在一个或多个组,则返回组列表;如果模式有多个组,这将是一个元组列表。结果中包含空匹配,除非它们触及另一场比赛的开头。

所以你的正则表达式的第一位是不必要的和限制的。

)

regex101

上查看