求vb用正则表达式获取手机设备名的值?

ycwww 2017-12-05 01:40:15
已知一台电脑可能有1台,或者2台,3台手机,用usb连接好电脑了。并且获得了下面的值

List of devices attached
设备名称 设备 ----- 这行是为了解释加上去的,实际上不存在 这儿默认暂时值为3台
fc2f9754 device
d51ad9ff device
d51ad9fd device
.....

用正则表达式 求结果值为(即取出所有设备名称,用|号间隔 合并成一个字符串):
fc2f9754|d51ad9ff|d51ad9fd

求完整源代码,谢谢。
...全文
420 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
无·法 2017-12-06
  • 打赏
  • 举报
回复
'此代码由“正则测试工具 v1.1.43”自动生成,请直接调用TestReg过程
Private Sub TestReg()
Dim strData As String
Dim reg As Object
Dim matchs As Object, i As Integer, j As Integer
strData = "设备名称 设备 ----- 这行是为了解释加上去的,实际上不存在 这儿默认暂时值为3台" & vbCrLf & _
"fc2f9754 device " & vbCrLf & _
"d51ad9ff device" & vbCrLf & _
"d51ad9fd device"
Set reg = CreateObject("vbscript.regExp")
reg.Global = True
reg.IgnoreCase = True
reg.MultiLine = True
reg.Pattern = "[a-z\d]{8}"
Set matchs = reg.Execute(strData)
For i = 0 To matchs.Count - 1
Debug.Print i + 1 & "." & matchs(i)
For j = 0 To matchs(i).SubMatches.Count - 1
Debug.Print "(" & j + 1 & ")." & matchs(i).SubMatches(j) & " ";
Next
If matchs(i).SubMatches.Count > 0 Then Debug.Print
Next
End Sub

无·法 2017-12-06
  • 打赏
  • 举报
回复
'此代码由“正则测试工具  v1.1.43”自动生成,请直接调用TestReg过程
Private Sub TestReg()
    Dim strData As String
    Dim reg As Object
    Dim matchs As Object, i As Integer, j As Integer
    strData = "设备名称            设备  ----- 这行是为了解释加上去的,实际上不存在 这儿默认暂时值为3台"  &  vbCrLf  & _
              "fc2f9754        device      "  &  vbCrLf  & _
              "d51ad9ff        device"  &  vbCrLf  & _
              "d51ad9fd       device"
    Set reg = CreateObject("vbscript.regExp")
    reg.Global = True
    reg.IgnoreCase = True
    reg.MultiLine = True
    reg.Pattern = "[a-z\d]{8}"
    Set matchs = reg.Execute(strData)
    For i = 0 To matchs.Count - 1
        Debug.Print i + 1 & "." & matchs(i)
        For j = 0 To matchs(i).SubMatches.Count - 1
           Debug.Print "(" & j + 1 & ")." & matchs(i).SubMatches(j) & " ";
        Next
        If matchs(i).SubMatches.Count > 0 Then Debug.Print
    Next
End Sub
小噤 2017-12-05
  • 打赏
  • 举报
回复

Option Explicit

Private Sub Form_Load()
Dim 源内容 As String
源内容 = "List of devices attached" & vbCrLf
源内容 = 源内容 & vbCrLf & "设备名称 设备 ----- 这行是为了解释加上去的,实际上不存在 这儿默认暂时值为3台"
源内容 = 源内容 & vbCrLf & "fc2f9754 device"
源内容 = 源内容 & vbCrLf & "d51ad9ff device"
源内容 = 源内容 & vbCrLf & "d51ad9fd device"
'''以上是模拟你获得的内容
'''以下是你要的代码.仅供参考
Dim 正则对象, 查找后的结果, i As Long, 每个结果, 你要的结果 As String
Set 正则对象 = CreateObject("vbscript.regexp") '创建正则对象
正则对象.Global = True
正则对象.IgnoreCase = True
正则对象.MultiLine = True
正则对象.Pattern = "([a-z0-9]+) +device(?!s)" '指定正则表达式
Set 查找后的结果 = 正则对象.Execute(源内容) '执行正则查找,返回所有匹配结果的集合,若未找到,则为空

If 查找后的结果.Count = 0 Then
Debug.Print "源内容,1项都匹配不了指定的规则"
Else

For Each 每个结果 In 查找后的结果
你要的结果 = 你要的结果 & 每个结果.submatches(0) & "|"
Next

End If

Debug.Print Mid(你要的结果, 1, Len(你要的结果) - 1)
End Sub

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧