Jak mogę pobrać pozycję pierwszego dopasowanego wyniku w wyrażeniu regularnym? Zobacz poniżej.Excel VBA Regex Pozycja dopasowania
Function MYMATCH(strValue As String, strPattern As String, Optional blnCase As Boolean = True, Optional blnBoolean = True) As String
Dim objRegEx As Object
Dim strPosition As Integer
' Create regular expression.
Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.Pattern = strPattern
objRegEx.IgnoreCase = blnCase
' Do the search match.
strPosition = objRegEx.Match(strValue)
MYMATCH = strPosition
End Function
Po pierwsze, nie jestem do końca pewien, co .Match
wraca (string, integer, itd.). Jedno znalezione rozwiązanie powiedziało, że powinienem utworzyć obiekt Match
, a następnie pobrać z niego pozycję, ale w przeciwieństwie do vb, vba nie rozpoznaje obiektu Match
. Ja również widziałem some code jak poniżej, ale nie jestem zawsze szuka wartości, tylko pierwszy placement ciąg:
If allMatches.count <> 0 Then
result = allMatches.Item(0).submatches.Item(0)
End If
Nieco pomijając żadnej z powyższych ewentualnych błędów składniowych (głównie ze względu na mnie zmianę zmiennej typy prawo i lewo), w jaki sposób łatwo to osiągnąć?
Dzięki!
Masz rację, moja wina (zapomniałem, że pomaga to reputacji wszystkich osób na tej stronie) ... poza tym sam to wymyśliłem ... znowu. – Jonathan
Jednak opublikuję odpowiedź w ciągu 8 godzin, aby uzyskać korzyści dla każdego, kto napotka na ten problem. – Jonathan
Dlaczego 8 godzin, a nie teraz? – JimmyPena