3

正規表現を使用して別の文字列の文字列パターンを検索するvbaマクロに取り組んでいます。

正規表現パターンには、変化する文字列(以下のコードのAPR24)が含まれています。パターンに変数を含める方法を知る必要があります。誰か助けてください。

私のコードは以下の通りです

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)APR24(,|\s|\()"
Regex.IgnoreCase = True
    If Regex.Test(str2bsrchd) Then
         Regexsrch = True
Else
        Regexsrch = False
End If
End Function
4

2 に答える 2

4

それで、str2srchは「APR24」またはいくつかのバリエーションですか?その場合は、連結を使用してパターン文字列を作成します。

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
于 2013-01-24T23:13:49.103 に答える
1

必要なパターンを指定してstr2srch、それに割り当てることができますRegex.Pattern

例えば

Sub Sample()
    Debug.Print Regexsrch("APR24ddd", "APR24")  '<~~ Returns True
    Debug.Print Regexsrch("APR277ddd", "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

ファローアップ

動的であっても、常にパターンを次のように渡すことができます。

Debug.Print Regexsrch("APR24ddd", "(\.|\s)" & VARIABLE & "(,|\s|\()")

これにより、関数に渡したいパターンを柔軟に使用でき、1つのパターンに制限されません...

于 2013-01-24T23:05:51.400 に答える