有下面几个字符串"01 White"
"02 White"
"03 Color White"
"04 Color White"
"05 Black"
"06 Blue"我要取出含有White但又没有Color一词的行,请问正则表达式怎么写也就是说在上面中能返回前两行.

解决方案 »

  1.   

    我的意思是想取出White一词,然后将其替换掉,但如果White前面有Color一词的则不进行替换.
      

  2.   

    正则表达式我不会:<先把Color White 换成一个特殊字符“#@#%”然后把 White 替换掉
    然后再把特殊字符换成Color White 
      

  3.   

    \d\s+(White)\b
    仅匹配数字空格后面的White或者零宽度负预测先行断言。仅当子表达式不在此位置的右侧匹配时才继续匹配。
    例如,\b(?!Color\s+)White\b 与不以 Color 开头的 White 匹配。
      

  4.   

    Private Sub Form_Load()
    s = "01 White" & vbCrLf & _
    "02 White" & vbCrLf & _
    "03 Color White" & vbCrLf & _
    "04 Color White" & vbCrLf & _
    "05 Black" & vbCrLf & _
    "06 Blue"
    Dim re As New RegExp
    Dim sh
    re.Global = True
    re.Pattern = "(\d){2}\sWhite"
    Set sh = re.Execute(s)
    For Each h In sh
    MsgBox h
    Next
    End Sub
      

  5.   

    要引用Microsoft VbScript  Regular expressions 5.5
      

  6.   

    不清楚具体数据,按楼主示例的意思,感觉:\d+[^ Color] White
      

  7.   

    来一个简单的:
    Private Sub Form_Load()
    Dim s(5) As String, i As Byte
    s(0) = "01 White"
    s(1) = "02 White"
    s(2) = "03 Color White"
    s(3) = "04 Color White"
    s(4) = "05 Black"
    s(5) = "06 Blue"For i = 0 To 5
    If InStr(s(i), "White") And InStr(s(i), "Color White") = 0 Then Debug.Print s(i)
    Next
    End Sub
      

  8.   

    这个好是好,可是我觉得回答还是要按楼主的意思来吧,还是用正则!
    另问一下:五楼的回复中
    re.Global = True
    re.Pattern = "(\d){2}\sWhite"

    正则的使用为什么要带“”???