Regex 从正则表达式中排除某些单词

Regex 从正则表达式中排除某些单词,regex,vba,excel,Regex,Vba,Excel,我有一个函数,可以在如下字符后插入空格:/- Private Function formatColon(oldString As String) As String Dim reg As New RegExp: reg.Global = True: reg.Pattern = "(\D:|\D/|\D-)" Dim newString As String: newString = reg.Replace(oldString, "$1 ") formatColon = Repla

我有一个函数,可以在如下字符后插入空格:/-

  Private Function formatColon(oldString As String) As String

  Dim reg As New RegExp: reg.Global = True: reg.Pattern = "(\D:|\D/|\D-)"
  Dim newString As String: newString = reg.Replace(oldString, "$1 ")
  formatColon = Replace(Replace(Replace(newString, ":  ", ": "), "/  ", "/ "), "-  ", "- ")

  End Function
代码很容易排除日期。我还想排除一些特殊的字符串,如“w/d”。 有办法吗

2017年6月15日abc/abc之前参考:123243-11参考-111 w/d

2017年6月15日abc/abc之后参考:123243-11参考-111 w/d


我想排除最后一个w/d,这里是另一个解决方案

^/(?!ignoreme$)(?!ignoreme2$)[a-z0-9]+$
您可以使用
(?!w/d)
lookahead来避免将
w/d
与您的模式匹配:

Dim oldString As String, newString As String
Dim reg As New RegExp
With reg
 .Global = True
 .Pattern = "(?!w/d)\D[:/-]"
End With
oldString = "abc/abc/15/06/2017 ref:123243-11 ref-111 w/d"
newString = reg.Replace(oldString, "$& ")
Debug.Print newString

图案细节

  • (?!w/d)
    -位置后面没有
    w/d
  • \D
    -任何非数字字符
  • [:/-]
    -a
    /
    -
    字符

$&
反向参考指的是替换模式的整个匹配,不需要用捕捉括号括住整个图案。

你能在abc/abc/15/06/2017之前添加前后示例吗参考:123243-11参考-111 w/d在abc/abc/15/06/2017之后参考:123243-11参考-111 w/d我想排除最后一个w/d你可以使用
“(?!w/d)\d[:/-”
然后
。替换(oldString,$&)
谢谢Wiktor。。。它工作得很好,我的代码现在好多了