I am working on a vba macro which uses regular expression to search for a string pattern in another string.
Regex pattern includes a string (APR24 in code below) wh
So str2srch is "APR24" or some variation? If that is the case you just use concatenation to build up your pattern string.
Public Function Regexsrch(ByVal str2bsrchd As String, ByVal str2srch As String) As Boolean
Dim Regex As New VBScript_RegExp_55.RegExp
Dim matches, s
Regex.Pattern = "(\.|\s)" + str2srch + "(,|\s|\()"
Regex.IgnoreCase = True
If Regex.Test(str2bsrchd) Then
Regexsrch = True
Else
Regexsrch = False
End If
End Function
You can specify whatever pattern you want in str2srch
and then assign that to Regex.Pattern
For example
Sub Sample()
Debug.Print Regexsrch("APR24ffffd", "APR24") '<~~ Returns True
Debug.Print Regexsrch("APR277ffffd", "APR24") '<~~ Returns False
End Sub
Public Function Regexsrch(ByVal str2bsrchd As String, ByVal str2srch As String) As Boolean
Dim Regex As New VBScript_RegExp_55.RegExp
Dim matches, s
Regex.Pattern = str2srch
Regex.IgnoreCase = True
If Regex.Test(str2bsrchd) Then
Regexsrch = True
Else
Regexsrch = False
End If
End Function
FOLLOWUP
Even if it is dynamic you can always pass the pattern as
Debug.Print Regexsrch("APR24ffffd", "(\.|\s)" & VARIABLE & "(,|\s|\()")
.
This gives you the flexibility of using whatever pattern you want to pass to the function and you are not limited to one pattern...