我有很多字符串,第一个是
"The quick brown fox jumped over the lazy dog".
我有一个关键字列表(在这种情况下相关的是"棕色"和#34;懒惰")。我正在尝试构建一个将通过目标字符串进行爬网的正则表达式,并且在关键字的第一个实例中,将返回字符串的其余部分。我创建了以下正则表达式:
.*?(?=(brown|lazy))
这提取了第一次出现,但由于某种原因,我无法弄清楚如何获得剩余的字符串(即"棕色狐狸跳过懒狗")而没有开始第二次出现。非常感谢这方面的建议。非常感谢
使用REGEX 5.5库在VBA中完成此操作
Function regexmatch(Myrange As Range) As String
Dim regEx As New RegExp
Dim strPattern As String
Dim strInput As String
Dim strReplace As String
Dim strOutput As String
strPattern = ".*?(?=(brown|lazy))"
If strPattern <> "" Then
strInput = Myrange.Value
strReplace = ""
With regEx
.Global = True
.MultiLine = True
.IgnoreCase = True
.pattern = strPattern
End With
If regEx.test(strInput) Then
regexmatch = regEx.replace(strInput, strReplace)
Else
regexmatch = ""
End If
End If
End Function
答案 0 :(得分:0)
你可以做两件事,但实际上,我只是建议:
master.cells(x,1) = foo
然后你会得到:
注意:
strPattern = "^.*?(brown|lazy)"
...
strReplace = "$1"
...
With regEx
.Global = False
必须是.Global
False
使模式锚定在字符串start,它只匹配字符串的开头^
并将整个匹配替换为(brown|lazy)
反向引用,以取代捕获的值。