posheng 发表于 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
   For $i = 0 To UBound($aAry) -1
         Local $aAryTemp = $aAry[$i]
         $aAryOut[$i] = $aAryTemp
         If UBound($aAryTemp) = 4 Then $aAryOut[$i] = $aAryTemp
   Next         
   _ArrayDisplay($aAryOut)
EndIf

zghwelcome 发表于 2025-12-12 21:51:44

(?s)Name:\h*(.*?)\h*Handle.+?Value:\h*(.*?)\h*Supported

posheng 发表于 2025-12-13 17:48:53

遗憾~
(?s)Name:\h*(.*?)\h*Handle.+?Value:\h*(.*?)\h*Supported
不行~
Name: 小小小g" & @CRLF & "gasdfB图 没提取出来,反而错误的提取了 Name: 查看方式
这个的一项大麻烦是: 不是每一项 都有 Value 的

zghwelcome 发表于 2025-12-13 20:21:14

**** Hidden Message *****

holley 发表于 2025-12-15 11:10:37

感谢分享

3131210 发表于 2025-12-18 15:02:31

学习一下正则
页: [1]
查看完整版本: 【已解决】:对正则表达式有研究的请进...