楼主 liuguansky |
Q:如何在下面的字符串中:“_+2_ U+47563137+34037717+00005324m+0063611d107_*L1++_,0.000_+3_ U+47563140+34037717+00005324m+0063611d107_*L1++_,0.000_+4_ U+47564547+34058752+00004847m+0373258d099_*L1_,0.000_+5_ U+47553513+34060607+00005356m+0513706d104_*L1_,0.000_+6_ U+47553363+34061758+00005692m+0525958d110_*L1_,0.000_+7_ U+47532851+34062538+00006537m+0892719d097_*L1_,0.000_+8_ U+47513555+34036646+00004864m+1723651d096_*L1++_,0.000_+9_ U+47463289+34035357+00005120m+1790136d096_*L1_,0.000_+10_ U+47462947+33953023+00005380m+2292212d111_*L1++_,0.000_+11_ U+47507774+33957622+00004876m+2520247d109_*L1_,0.000_+12_ U+47553337+33963307+00004599m+2861923d103_*L1_,0.000_+13_ U+47548966+33960215+00005976m+2822926d108_*L1++_,0.000_+14_ U+47533362+33959231+00005427m+2703549d098_*L1_,0.000_ ”提取如下面的字符串:2_ U+47563137+34037717+00005324m+0063611d107_*L1++12_ U+47553337+33963307+00004599m+2861923d103_*L1最好能直接提取到数组中:点号 X Y Z 编码2 47563137 34037717 00005324m L1++ A:用如下代码可以实现:- Sub justtest()
- Dim S$, m, arrt(), k&, j As Byte, ar
- S = "_+2_ U+47563137+34037717+00005324m+0063611d107_*L1++_,0.000" & _
- "_+3_ U+47563140+34037717+00005324m+0063611d107_*L1++_,0.000" & _
- "_+4_ U+47564547+34058752+00004847m+0373258d099_*L1_,0.000" & _
- "_+5_ U+47553513+34060607+00005356m+0513706d104_*L1_,0.000" & _
- "_+6_ U+47553363+34061758+00005692m+0525958d110_*L1_,0.000" & _
- "_+7_ U+47532851+34062538+00006537m+0892719d097_*L1_,0.000" & _
- "_+8_ U+47513555+34036646+00004864m+1723651d096_*L1++_,0.000" & _
- "_+9_ U+47463289+34035357+00005120m+1790136d096_*L1_,0.000" & _
- "_+10_ U+47462947+33953023+00005380m+2292212d111_*L1++_,0.000" & _
- "_+11_ U+47507774+33957622+00004876m+2520247d109_*L1_,0.000" & _
- "_+12_ U+47553337+33963307+00004599m+2861923d103_*L1_,0.000" & _
- "_+13_ U+47548966+33960215+00005976m+2822926d108_*L1++_,0.000" & _
- "_+14_ U+47533362+33959231+00005427m+2703549d098_*L1_,0.000"
- With CreateObject("vbscript.regexp")
- .Global = True
- .MultiLine = True
- .Pattern = "_\+(\d+)_ U\+(\d{8})\+(\d{8})\+(\d{8}[a-z])\+\d{7}[a-z]\d{3}_\*([A-Z]\d*\+*)(?=_,0\.000)"
- If .test(S) Then
- ar = Array("点号", "X", "Y", "Z", "编码")
- k = k + 1: ReDim Preserve arrt(1 To 5, 1 To k)
- For j = 1 To 5
- arrt(j, k) = ar(j - 1)
- Next j
- For Each m In .Execute(S)
- k = k + 1: ReDim Preserve arrt(1 To 5, 1 To k)
- For j = 1 To 5
- arrt(j, k) = m.submatches(j - 1)
- Next j
- Next
- End If
- End With
- ActiveCell.Resize(k, 5) = Application.Transpose(arrt)
- End Sub
|