[已解决]如何用正则提取指定字符?
本帖最后由 pdp320921 于 2011-6-11 14:42 编辑Driver : Realtek RTL8188CE Wireless LAN 802.11n PCI-E NIC
Vendor : Realtek Semiconductor Corp.
Provider : Realtek Semiconductor Corp.
Date : 2010/10/15
Version : 1005.6.1015.2010
INF file : C:\windows\INF\oem14.inf
Files : 2 total
C:\windows\system32\DRIVERS\rtl8192Ce.sys
C:\windows\system32\drivers\vwifibus.sys
Type : Native Wi-Fi Driver
Radio types supported : 802.11n 802.11g 802.11b
FIPS 140-2 mode supported : No
如何提取Realtek RTL8188CE Wireless LAN 802.11n PCI-E NIC
802.11n 802.11g 802.11b
?
我的正则
(?:Driver\s*:\s*)([\w.\s\-]+)
(?:Radio types supported\s*:\s*)([\w.\s]*)
发现提取的结果是Realtek RTL8188CE Wireless LAN 802.11n PCI-E NIC Vendor
802.11n 802.11g 802.11b FIPS
多提取了下一行的字符。
有没有一行的终止符 or忽略换行符?
恳请大虾们指点下~~ 本帖最后由 afan 于 2011-4-13 16:21 编辑
#include <Array.au3>
Local $Str = _
' Driver : Realtek RTL8188CE Wireless LAN 802.11n PCI-E NIC' & @CRLF & _
' Vendor : Realtek Semiconductor Corp.' & @CRLF & _
' Provider : Realtek Semiconductor Corp.' & @CRLF & _
' Date : 2010/10/15' & @CRLF & _
' Version : 1005.6.1015.2010' & @CRLF & _
' INF file : C:\windows\INF\oem14.inf' & @CRLF & _
' Files : 2 total' & @CRLF & _
' C:\windows\system32\DRIVERS\rtl8192Ce.sys' & @CRLF & _
' C:\windows\system32\drivers\vwifibus.sys' & @CRLF & _
' Type : Native Wi-Fi Driver' & @CRLF & _
' Radio types supported : 802.11n 802.11g 802.11b' & @CRLF & _
' FIPS 140-2 mode supported : No'
Local $Test = StringRegExp($str, '(?s)Driver\h+:\h(\V+).+?supported\h+:\h(\V+)', 1)
_ArrayDisplay($Test, UBound($Test)) 学习了 感谢afan (?s)Driver.*?:\h(\V+).*Radio.*?:\h(\V+)
另外向afan学习 回复 2# afan
感谢A版!
如果提取空白字符呢?
例如:
Interface name : Wireless Network Connection
There are 6 networks currently visible.
SSID 1 :
Network type : Infrastructure
Authentication : WPA-Personal
Encryption : TKIP
我想提取SSID 1 :后面的空白怎么弄? SSID 1 :(\h+)这意思? 本帖最后由 easefull 于 2011-4-16 00:02 编辑
做题#include <Array.au3>
Local $sText = _
' Driver : Realtek RTL8188CE Wireless LAN 802.11n PCI-E NIC' & @CRLF & _
' Vendor : Realtek Semiconductor Corp.' & @CRLF & _
' Provider : Realtek Semiconductor Corp.' & @CRLF & _
' Date : 2010/10/15' & @CRLF & _
' Version : 1005.6.1015.2010' & @CRLF & _
' INF file : C:\windows\INF\oem14.inf' & @CRLF & _
' Files : 2 total' & @CRLF & _
' C:\windows\system32\DRIVERS\rtl8192Ce.sys' & @CRLF & _
' C:\windows\system32\drivers\vwifibus.sys' & @CRLF & _
' Type : Native Wi-Fi Driver' & @CRLF & _
' Radio types supported : 802.11n 802.11g 802.11b' & @CRLF & _
' FIPS 140-2 mode supported : No'
Local $sRegExp= '(?<=: ).+?\n'
Local $asResult = StringRegExp($sText, $sRegExp, 1)
If @error Then
MsgBox(4096, "", "返回结果非数组" &@LF& $asResult)
Else
For $i = 0 To UBound($asResult) - 1 Step 1
If StringLen($asResult[$i]) > 4094 Then
Local $IsCut = MsgBox(4096 + 48 + 4 + 256, "警告", "数组元素 $asResult[" & $i & "]长度超出显示界限(4094)" & @LF & "是否需要截取字符串?")
If $IsCut = 6 Then $asResult[$i] = StringLeft($asResult[$i], 4094)
EndIf
Next
_ArrayDisplay($asResult)
EndIf
Exit读题错误
继续向afan学习... 本帖最后由 pdp320921 于 2011-4-16 15:42 编辑
回复 6# afan
谢A版~
其实是想提取 SSID 1 : XXXX
xxx的内容,不管是什么字符,包括空白(但不包括下一行的字符) 回复 8# pdp320921
SSID 1 :(\V+) 为什么不是(.*)afan是不是?s 用多了,有阴影 本帖最后由 afan 于 2011-4-16 22:55 编辑
为什么不是(.*)afan是不是?s 用多了,有阴影
love5173 发表于 2011-4-16 18:17 http://www.autoitx.com/images/common/back.gif
.会捕捉到回车符,没阴影~
btw, 积分1万整,拍照~ 回复 11# afan
跟着您的身影来了,忘记了看上下文,单纯看来楼主的最后一次留言,嘿嘿 回复 9# afan
可以不依赖SSID 1吗?因为可能是SSID 2或其他SSID n~~ 回复afan
可以不依赖SSID 1吗?因为可能是SSID 2或其他SSID n~~
pdp320921 发表于 2011-4-16 20:16 http://www.autoitx.com/images/common/back.gif
SSID\s\d+\s:\s(\V+)
看来这问题很困扰你啊,都快晕成伸手党了 回复 14# easefull
听你这话纠结~
只是自己写的会直接提取到下一行的字符,而不知怎么去提取一行终止!
页:
[1]
2