我正在使用Microsoft VBScript Regular Expressions 5.5在Excel文档的单元格中使用VBA中的正则表达式解析大量文本数据。
我无法弄清楚如何创建一个正则表达式短语,该短语将与以下内容匹配:“部署”,“部署”,“部署”但不是特别说“重新部署”的内容。到目前为止,我已尝试过以下表达式,但无济于事:
(^[rR][eE])([dD][eE][pP][lL][oO][yY])
(^[rR][eE])?([dD][eE][pP][lL][oO][yY])
.(^[rR][eE])([dD][eE][pP][lL][oO][yY])
*(^[rR][eE])([dD][eE][pP][lL][oO][yY])
有人能发现我做错了吗?或者,鉴于Regex如何运作,这是不可能的?
答案 0 :(得分:0)
试试这个正则表达式:
redeploy\w*|(\w*deploy\w*)
您正在寻找的单词位于第一个捕获组中。它将捕获包含 deploy 但不以重新部署开头的每个单词。
您也可以尝试以下代码(未经测试):
Dim searchStr As String
searchStr = "redeploy deploying redeployment deploy"
Dim regex As New VBScript_RegExp_55.RegExp
Dim matches
regex.Pattern = "redeploy\w*|(\w*deploy\w*)"
regex.IgnoreCase = True
regex.Global = True
If regex.test(searchStr) Then
Set matches = regex.Execute(searchStr)
Dim match As Variant
For Each match In matches
Debug.Print match.Submatches(0)
Next
End If
答案 1 :(得分:0)
使用此:
>> Set r = New RegExp
>> r.IgnoreCase = True
>> r.Pattern = "\bdeploy"
>> For Each w In Split("redeploy deploy deploywhatever misdeploy")
>> WScript.Echo w, CStr(r.Test(w))
>> Next
>>
redeploy Falsch
deploy Wahr
deploywhatever Wahr
misdeploy Falsch
>>
尝试“以'deploy'开头的单词”符合您的规范。
答案 2 :(得分:0)
"(?!re)\b\S*deploy\S*"
将不匹配重新部署,但会匹配,例如misdeploy,以及各种表单(部署,部署等)
如果你可以删除所有“前缀”部署的单词,那么
"\bdeploy\S*"
会更简单。