首页 > 解决方案 > Autoit脚本从字符串中提取所有IP地址

问题描述

我是autoit的新手,我想以数组格式从这个字符串中提取所有IP地址

#include <MsgBoxConstants.au3>
#include <StringConstants.au3>
#include <array.au3>

$str = "ghg shjsja 192.168.1.2 hbkjNKKSJKKN HKJCBKJLKKL 12.15.14.45 
        KJBKJABCKBNDKQ djfsjdkfhnwk kjwenfkjdsnf knfflksnf KHBKJABCKJQDH 
        1.1.1.1 2.2.2.2"

$copy = StringRegExp($str,"((\d{1,3}\.){3}\d{1,3})",3)
MsgBox(0,"",$copy[0])`

当我跳过一步时,我得到了所有 ip,这意味着当我使用 $copy[2] 时我将获得第二个 ip。我想在不跳过这一步的情况下提取所有 ip。

标签: autoit

解决方案


$str = "ghg shjsja 192.168.1.2 hbkjNKKSJKKN HKJCBKJLKKL 12.15.14.45 " & _
       "KJBKJABCKBNDKQ djfsjdkfhnwk kjwenfkjdsnf knfflksnf KHBKJABCKJQDH " & _
       "1.1.1.1 2.2.2.2"

$copy = StringRegExp($str, "((?:\d{1,3}\.){3}\d{1,3})", 3)

For $i = 0 To UBound($copy) -1
    ConsoleWrite($copy[$i] & @CRLF)
    MsgBox(0, "", $copy[$i])
Next

将输出

192.168.1.2
12.15.14.45
1.1.1.1
2.2.2.2

代替

192.168.1.2
1.
12.15.14.45
14.
1.1.1.1
1.
2.2.2.2
2.

内部捕获组的?:开头使其不捕获而只是一个组。外部组将内部组与外部捕获组内的其他字符一起捕获为单个[步]。


推荐阅读