找回密码
 加入
搜索
查看: 396|回复: 12

[AU3基础] 求一段正则,感谢大佬们。

[复制链接]
发表于 2024-1-2 13:13:22 | 显示全部楼层 |阅读模式
[DESKTOP-2QIB7QO]
IP=192.168.100.1

求[DESKTOP-2QIB7QO]下的IP值,这个正则该怎么写呢?谢谢啦
发表于 2024-1-2 13:18:49 | 显示全部楼层
Local $sSource = _
                '[DESKTOP-2QIB7QO]' & @CRLF & _
                'IP=192.168.100.1'
$sD = 'DESKTOP-2QIB7QO'
Local $aSRE = StringRegExp($sSource, '(?i)\[' & $sD & '\]\v+\s*IP\h*\=\h*([\d\.]+)', 1)
If Not @Error Then MsgBox(0, '', $aSRE[0])
 楼主| 发表于 2024-1-2 13:50:35 | 显示全部楼层
本帖最后由 jwqs5533 于 2024-1-2 13:57 编辑

A大是我没说清楚

[DESKTOP-2QIB7QO]
IP=192.168.100.1

;[DESKTOP-2QIB7QO]
IP=192.168.100.1

[DESKTOP-1255898]
IP=192.168.100.2

[DESKTOP-5fffffff]
IP=192.168.100.2

是多组检查,检查其中[DESKTOP-2QIB7QO]的IP值,包含;的不检查
发表于 2024-1-2 14:05:39 | 显示全部楼层
jwqs5533 发表于 2024-1-2 13:50
A大是我没说清楚

[DESKTOP-2QIB7QO]

改一行 Local $aSRE = StringRegExp($sSource, '(?mi)^\h*\[' & $sD & '\]\v+\s*IP\h*\=\h*([\d\.]+)', 1)
 楼主| 发表于 2024-1-2 15:08:03 | 显示全部楼层
本帖最后由 jwqs5533 于 2024-1-2 15:28 编辑
afan 发表于 2024-1-2 14:05
改一行 Local $aSRE = StringRegExp($sSource, '(?mi)^\h*\[' & $sD & '\]\v+\s*IP\h*\=\h*([\d\.]+)', 1 ...

好用了,谢谢A大,可以让获取到的IP值不限制类型,即使是空值也能获取到吗?比如 IP=
发表于 2024-1-2 15:33:10 | 显示全部楼层
jwqs5533 发表于 2024-1-2 15:08
好用了,谢谢A大,可以让获取到的IP值不限制类型,即使是空值也能获取到吗?比如 IP= ...

表达式最后的 + 改为 *
...([\d\.]*)',
 楼主| 发表于 2024-1-2 16:53:10 | 显示全部楼层
afan 发表于 2024-1-2 15:33
表达式最后的 + 改为 *
...([\d\.]*)',

A大又得麻烦你呀,怎么能获取多行的呢
[DESKTOP-2QIB7QOb]
IP=192.168.1.100
Gateway=192.168.1.1
SubnetMask=255.255.255.0

这种的。。。。现在这个正则只能获取第一行的,我想每一行都是独立获取的
发表于 2024-1-2 17:10:32 | 显示全部楼层

IniReadSection
 楼主| 发表于 2024-1-2 17:50:46 | 显示全部楼层

就是不想用IniReadSection嘛
发表于 2024-1-2 18:19:17 | 显示全部楼层
jwqs5533 发表于 2024-1-2 17:50
就是不想用IniReadSection嘛

你这是不是还撒起娇来了 _ _||
你的数据是标准的ini结构,用ini函数是最简单、方便、快捷的
 楼主| 发表于 2024-1-3 13:22:24 | 显示全部楼层
afan 发表于 2024-1-2 18:19
你这是不是还撒起娇来了 _ _||
你的数据是标准的ini结构,用ini函数是最简单、方便、快捷的 ...

关键是不想用共享或者下载方式去获取INI,在给搞搞嘛A大
发表于 2024-1-3 14:34:21 | 显示全部楼层
jwqs5533 发表于 2024-1-2 16:53
A大又得麻烦你呀,怎么能获取多行的呢
[DESKTOP-2QIB7QOb]
IP=192.168.1.100

是这个意思吗?
#include <Array.au3>
#include <String.au3>

; 定义待匹配的文本
Local $sText = "[DESKTOP-2QIB7QOb]" & @CRLF & _
"IP=192.168.1.100" & @CRLF & _
"Gateway=192.168.1.1" & @CRLF & _
"SubnetMask=255.255.255.0"

; 使用StringRegExp进行匹配
Local $aMatches = StringRegExp($sText, "IP=(\S+)\s+Gateway=(\S+)\s+SubnetMask=(\S+)", 3)

; 确认是否有匹配项
If @error Then
    MsgBox($MB_ICONERROR, "Error", "No matches found.")
Else
    ; 打印结果
    MsgBox($MB_ICONINFORMATION, "Results", "IP: " & $aMatches[0] & @CRLF & _
           "Gateway: " & $aMatches[1] & @CRLF & _
           "SubnetMask: " & $aMatches[2])
EndIf
发表于 2024-1-5 11:27:34 | 显示全部楼层
正好过来,也学一下正则的内容
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-22 12:01 , Processed in 0.076499 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表