VBScript preg_match 関数

正規表現によるマッチングを行う


Const PREG_PATTERN_ORDER  = 1
Const PREG_SET_ORDER      = 2
Const PREG_OFFSET_CAPTURE = 256
Function preg_match(pattern, ByVal subject, ByRef matches, flags, offset)

    Dim matchAll,matchone
    Dim cnt,helper

    preg_match = false

    set helper = new RegExp_Helper
    helper.parseOption(pattern)

    Set matchAll = new RegExp
    With matchAll
        .IgnoreCase = helper.withIgnoreCase
        .Global     = false
        .pattern    = helper.withPattern
        .MultiLine  = helper.withMultiLine
    End With

    set helper = Nothing

    If not is_empty(offset) Then
        offset = int(offset)
        subject = Mid(subject,offset)
    End If

    offset = intval( offset )

    If vartype(matches) <> 8 Then
        Set matchone = matchAll.execute(subject)
        Set matchAll = Nothing
        If matchone.count = 0 Then exit Function

        If flags = PREG_OFFSET_CAPTURE Then

            ReDim matches(1)
            matches(0) = matchone(0).value
            matches(1) = offset + matchone(0).FirstIndex
        Else
            ReDim matches(0)
            matches(0) = matchone(0).value
        End If

        preg_match = true
    Else
        preg_match = matchAll.Test(subject)
        Set matchAll = Nothing
    End If

End Function

引数

pattern = string 検索するパターンを表す文字列。
subject = string 入力文字列。
matches = array matches を指定した場合、検索結果が代入されます。matches(0) にはパターン全体にマッチしたテキストが代入され、 matches(1)には 1 番目ののキャプチャ用サブパターンにマッチした 文字列が代入され、といったようになります。
flags = int PREG_OFFSET_CAPTURE このフラグを設定した場合、各マッチに対応する文字列のオフセットも返されます。 これにより、返り値は配列となり、配列の要素 0 はマッチした文字列、 要素 1は対象文字列中におけるマッチした文字列のオフセット値 となることに注意してください。
offset = int 通常、検索は対象文字列の先頭から開始されます。 オプションのパラメータ offset を使用して 検索の開始位置を指定することも可能です。

戻り値

preg_match() は、pattern がマッチした回数を返します。
つまり、0 回(マッチせず)または 1 回となります。
これは、最初にマッチした時点でpreg_match() は検索を止めるためです。

処理

・pattern で指定した正規表現により subject を検索します。

その他の PHP regexp 関数