Tôi đang sử dụng truy cập VBA để phân tích một chuỗi với regex. Đây là chức năng regex của tôi:vba tích cực lookahead là quá tham lam
Function regexSearch(pattern As String, source As String) As String
Dim re As RegExp
Dim matches As MatchCollection
Dim match As match
Set re = New RegExp
re.IgnoreCase = True
re.pattern = pattern
Set matches = re.Execute(source)
If matches.Count > 0 Then
regexSearch = matches(0).Value
Else
regexSearch = ""
End If
End Function
Khi tôi thử nghiệm nó với:
regexSearch("^.+(?=[ _-]+mp)", "153 - MP 13.61 to MP 17.65")
Tôi đang chờ đợi để có được:
153
vì các nhân vật duy nhất giữa này và trường hợp đầu tiên của 'MP' là những người trong lớp được chỉ định trong lookahead.
nhưng giá trị trả thực tế của tôi là:
153 - MP 13.61 to
Tại sao nó chụp cho đến thứ hai 'MP'?
Điều đó giải quyết được. – sigil
Rất tốt khi nghe tiếng sigil đó. –
+1 được thực hiện tốt. – brettdj