找回密码
 加入
搜索
查看: 154|回复: 5

[网络通信] 【已解决】:对正则表达式有研究的请进...

[复制链接]
发表于 2025-12-12 16:11:25 | 显示全部楼层 |阅读模式
本帖最后由 posheng 于 2025-12-13 21:21 编辑


提取Name值和Value值

非常感谢牛B的zghwelcome,正则写得极好~
我只能用StringSplit($ff, 'Name: ', 1)分开后再逐个处理....
原来StringRegExp的参数4有这个功能~开眼了~
#include <Array.au3>
$ff = "Name: AA    Handle: 0x0(0) Value: 'VV'    Supported" & @CRLF & _
                "Name: 查看方式:    Handle: 0x0(0)    LegacyI" & @CRLF & _
                "Name: 小小小g" & @CRLF & "gasdfB图    Handle: 0x0(0) Value: '111'    Supported" & @CRLF & _
                "Name: 缩图    Handle: 0x0(0) Value: '222'    Supported" & @CRLF & _
                "Name: P图    Handle: 0x0(0) Value: '4445" & @CRLF & "5555'    Supported" & @CRLF & _
                "Name: EEEE:    Handle: 0x0(0)    LegacyI"

Local $aAry = StringRegExp($ff, "(?s)Name:\h*((?:(?!Handle|Name|Value).)+?)\h+(?:(?!Name|Value|Supported).)+((?:Value:\h*'([^']+)')?)", 4)
If Not @error Then 
   Local $aAryOut[UBound($aAry)][2]
   For $i = 0 To UBound($aAry) -1
           Local $aAryTemp = $aAry[$i]
           $aAryOut[$i][0] = $aAryTemp[1]
           If UBound($aAryTemp) = 4 Then $aAryOut[$i][1] = $aAryTemp[3]
   Next           
   _ArrayDisplay($aAryOut)
EndIf

发表于 2025-12-12 21:51:44 | 显示全部楼层
(?s)Name:\h*(.*?)\h*Handle.+?Value:\h*(.*?)\h*Supported
 楼主| 发表于 2025-12-13 17:48:53 | 显示全部楼层
遗憾~
(?s)Name:\h*(.*?)\h*Handle.+?Value:\h*(.*?)\h*Supported
不行~
Name: 小小小g" & @CRLF & "gasdfB图 没提取出来,反而错误的提取了 Name: 查看方式
这个的一项大麻烦是: 不是每一项 都有 Value 的
发表于 2025-12-13 20:21:14 | 显示全部楼层
游客,如果您要查看本帖隐藏内容请回复


发表于 2025-12-18 15:02:31 | 显示全部楼层
学习一下正则
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2026-1-17 12:30 , Processed in 0.069325 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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