文本内容如下
[2011-04-28]
文本1
文本2
[2011-04-29]
文本3
文本4
[2011-04-30]
文本5
我需要把每个日期段的每行文本都存为变量 这个正则应该怎么写呢?

解决方案 »

  1.   

    问问sysdzw
      

  2.   


    Public Function LoadInfoFile(fvFileName As String) As Boolean
       Dim fs As Integer
       Dim LineStr As String
       Dim InStrLong As Long
       Dim NowItem As String
       Dim NowListItem As InfoListItem
       Dim ReString As String
       Dim TempString As String
       Dim ValueType As Long
       Dim OrderBy As Long
       If Dir(fvFileName, vbReadOnly + vbSystem + vbHidden) <> "" Then
          mvarFileName = fvFileName
          fs = FreeFile
          Open fvFileName For Input As #fs
          Do While Not EOF(fs)
             Line Input #fs, LineStr
             LineStr = Replace(LineStr, vbTab, " ")
             LineStr = Trim(LineStr)
             If Len(LineStr) > 0 Then
                '处理注译信息
                ReString = ""
                InStrLong = InStr(1, LineStr, "//") - 1
                If InStrLong > 0 Then
                   TempString = LineStr
                   LineStr = Left(LineStr, InStrLong)
                   LineStr = Trim(LineStr)
                   ReString = Right(TempString, Len(TempString) - InStrLong - 2)
                   ReString = Trim(ReString)
                End If
                '段落识别
                If Left(LineStr, 1) = "[" And Right(LineStr, 1) = "]" Then
                   LineStr = Mid(LineStr, 2, Len(LineStr) - 2)
                   NowItem = LineStr
                   Set NowListItem = InfoListClass.Add(NowItem, ReString, Replace(NowItem, " ", "_"))
                   OrderBy = 0
                Else
                   '分析主题和内容
                   OrderBy = OrderBy + 1
                   StringArray = Split(LineStr, "=")
                   If UBound(StringArray) = 1 Then
                      StringArray(0) = Trim(StringArray(0))
                      StringArray(1) = Trim(StringArray(1))
                      If Left(StringArray(1), 1) = Chr(34) And Right(StringArray(1), 1) = Chr(34) Then
                         ValueType = vbString
                         StringArray(1) = Mid(StringArray(1), 2, Len(StringArray(1)) - 2)
                      ElseIf UCase(StringArray(1)) = "TRUE" Or UCase(StringArray(1)) = "FALSE" Then
                         ValueType = vbBoolean
                      ElseIf IsNumeric(StringArray(1)) = True Then
                         ValueType = vbLong
                      ElseIf Left(StringArray(1), 1) = "#" Then
                         ValueType = vbByte
                      Else
                         ValueType = vbString
                      End If
                      NowListItem.InfoItemClass.Add StringArray(0), StringArray(1), ReString, ValueType, OrderBy
                   End If
                End If
             End If
          Loop
          Close #fs
       End IfEnd Function
      

  3.   

    你表达的有问题?
    每个日期段的每行文本 没看明白
    都存为变量 没看明白如果要去的所有日期的话用下面代码:
    '此代码由“正则测试工具 v1.1.33”自动生成,请直接调用TestReg过程
    Private Sub TestReg()
        Dim strData As String
        Dim reg As Object
        Dim matchs As Object, match As Object    strData = "文本内容如下"  &  vbCrLf  & _
                  "[2011-04-28]"  &  vbCrLf  & _
                  "文本1"  &  vbCrLf  & _
                  "文本2"  &  vbCrLf  & _
                  "[2011-04-29]"  &  vbCrLf  & _
                  "文本3"  &  vbCrLf  & _
                  "文本4"  &  vbCrLf  & _
                  "[2011-04-30]"  &  vbCrLf  & _
                  "文本5"    Set reg = CreateObject("vbscript.regExp")
        reg.Global = True
        reg.IgnoreCase = True
        reg.MultiLine = True
        reg.Pattern = "\[(.+)\]"
        Set matchs = reg.Execute(strData)
        For Each match In matchs
            Debug.Print match.SubMatches(0)
        Next
    End Sub