VBScript preg_replace 関数

正規表現検索および置換を行う


Function preg_replace(pattern,replacement,ByVal subject,limit,ByRef cnt)

    Dim key
    cnt = 0

    If isArray(subject) Then
        For key = 0 to uBound(subject)
            subject(key) = preg_replace( pattern, replacement, subject(key),limit,cnt)
        Next
    ElseIf isObject(subject) Then
        For Each key In subject
            subject(key) = preg_replace( pattern, replacement, subject(key),limit,cnt)
        Next
    Else

        If isArray(pattern) Then
            If not isArray(replacement) Then
                For key = 0 to uBound(pattern)
                    subject = preg_replace( pattern(key), replacement, _
                                   subject,limit,cnt)
                Next
            ElseIf isArray(replacement) Then

                If uBound(pattern) <> uBound(replacement) Then
                    ReDim Preserve replacement(uBound(pattern))
                End If
                For key = 0 to uBound(pattern)
                    subject = preg_replace( pattern(key), replacement(key), _
                                   subject,limit,cnt)
                Next
            End If

        Else

            Dim strRetValue, RegEx,helper

            set helper = new RegExp_Helper
            helper.parseOption(pattern)

            Set RegEx = New RegExp
            With RegEx
                .IgnoreCase = helper.withIgnoreCase
                .Global     = [?](limit,false,true)
                .pattern    = helper.withPattern
                .MultiLine  = helper.withMultiLine
            End With
            set helper = Nothing

            If RegEx.Global Then
                If  len(subject) > 0 Then _
                subject = RegEx.Replace(subject, replacement)
            Else
                For key = 1 to limit
                    subject = RegEx.Replace(subject, replacement)
                    cnt = cnt + 1
                Next
            End If

            set RegEx = Nothing

        End If
    End If

    preg_replace = subject

End Function

引数

pattern = mixed 検索を行うパターン。文字列もしくは配列とすることができます。
replacement = mixed 置換を行う文字列もしくは文字列の配列。
subject = mixed 検索・置換対象となる文字列もしくは文字列の配列
limit = int subject 文字列において、各パターンによる 置換を行う最大回数。デフォルトは -1 (制限無し)。
cnt = int この引数が指定されると、置換回数が渡されます。

戻り値

subject 引数が配列の場合は配列を、 その他の場合は文字列を返します。
パターンがマッチした場合、〔置換が行われた〕新しい subject を返します。
マッチしなかった場合、subject をそのまま返します。

処理

・subject に関して pattern を用いて検索を行い、 replacement に置換します。

その他の PHP regexp 関数