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。。。它工作得很好,我的代码现在好多了