본문 바로가기
Regular Expressions(정규표현식)

Match 개체

2023. 8. 20.

이 글은 도움말을 번역한 글입니다.

Match 개체

정규식 일치의 읽기 전용 속성에 대한 액세스를 제공합니다.

비고
Match 개체는 실제로 Match 개체 컬렉션을 반환하는 RegExp 개체의 Execute 메서드를 통해서만 만들 수 있습니다. 모든 Match 개체 속성은 읽기 전용입니다.

정규식이 실행되면 0개 이상의 Match 개체가 생성될 수 있습니다. 각 Match 객체는 정규식으로 찾은 문자열, 문자열 길이 및 일치 항목을 찾은 위치에 대한 인덱스에 대한 액세스를 제공합니다.

다음 코드는 Match 객체의 사용법을 보여줍니다

Function RegExpTest(patrn As String, strng As String) As String
    Dim regEx As Object
    Dim Match As Object
    Dim Matches As Object
    Dim RetStr As String
    Dim i As Integer
    Set regEx = CreateObject("VBScript.RegExp") ' 정규표현식 개체 생성.
    regEx.pattern = patrn ' 패턴 설정.
    regEx.IgnoreCase = True ' 대소문자 무시 설정.
    regEx.Global = True ' 전체 검색 설정.
    Set Matches = regEx.Execute(strng) ' 검색 실행.
    
    For Each Match In Matches ' Matches 컬렉션 반복.
        RetStr = RetStr & "일치 " & i & " 위치: "
        RetStr = RetStr & Match.FirstIndex & ". 일치 값: '"
        RetStr = RetStr & Match.Value & "'." & vbCrLf
    Next
    
    RegExpTest = RetStr
End Function

Sub TestRegExpTest()
    MsgBox RegExpTest("is.", "IS1 is2 IS3 is4")
End Sub

' Output
' 일치 0 위치: 0. 일치 값: 'IS1'.
' 일치 0 위치: 4. 일치 값: 'is2'.
' 일치 0 위치: 8. 일치 값: 'IS3'.
' 일치 0 위치: 12. 일치 값: 'is4'.

FirstIndex Property

검색 문자열에서 일치하는 항목이 있는 위치를 반환합니다.

 

Syntax

object.FirstIndex

 

object : 항상 Match 개체입니다.

 

비고
FirstIndex 속성은 검색 문자열의 시작 부분에서 0을 기준으로 오프셋을 사용합니다. 즉, 문자열의 첫 번째 문자는 문자 0(0)으로 식별됩니다. 다음 코드는 FirstIndex 속성의 사용법을 보여줍니다.

Function RegExpTest(patrn As String, strng As String) As String
    Dim regEx As Object, Match As Object, Matches As Object
    Set regEx = CreateObject("VBScript.RegExp") ' 정규식을 만듭니다.
    regEx.pattern = patrn ' 패턴을 설정합니다.
    regEx.IgnoreCase = True ' 대/소문자를 구분하지 않도록 설정합니다.
    regEx.Global = True ' 전체 문자열을 검색하도록 설정합니다.
    Set Matches = regEx.Execute(strng) ' 검색을 실행합니다.
    Dim RetStr As String
    RetStr = ""
    For Each Match In Matches ' Matches 컬렉션을 반복합니다.
        RetStr = RetStr & "일치합니다. 다음 위치에서 찾았습니다: "
        RetStr = RetStr & Match.FirstIndex & ". 일치하는 값은 '"
        RetStr = RetStr & Match.Value & "' 입니다." & vbCrLf
    Next Match
    RegExpTest = RetStr
End Function

Sub TestRegExpTest()
    Debug.Print RegExpTest("is.", "IS1 is2 IS3 is4")
End Sub

' Output
' 일치합니다. 다음 위치에서 찾았습니다: 0. 일치하는 값은 'IS1' 입니다.
' 일치합니다. 다음 위치에서 찾았습니다: 4. 일치하는 값은 'is2' 입니다.
' 일치합니다. 다음 위치에서 찾았습니다: 8. 일치하는 값은 'IS3' 입니다.
' 일치합니다. 다음 위치에서 찾았습니다: 12. 일치하는 값은 'is4' 입니다.

Length Property

검색 문자열에서 찾은 일치 항목의 길이를 반환합니다.

 

Syntax

object.Length

 

object : 항상 Match 개체입니다.

 

비고

아래 코드는 Length 속성 사용법을 보여줍니다.

Function RegExpTest(patrn As String, strng As String) As String
    Dim regEx As Object
    Dim Match As Object
    Dim Matches As Object
    Dim s As String

    ' 정규 표현식 개체 생성.
    Set regEx = CreateObject("VBScript.RegExp")
    regEx.pattern = patrn
    regEx.IgnoreCase = True
    regEx.Global = True

    ' 검색 수행.
    Set Matches = regEx.Execute(strng)

    ' 일치하는 부분 반복 처리.
    s = ""
    For Each Match In Matches
        s = s & "일치 위치: "
        s = s & Match.FirstIndex & ".  "
        s = s & "일치 길이: "
        s = s & Match.Length & "."
        s = s & vbCrLf
    Next

    RegExpTest = s
End Function

Sub TestRegExp()
    Debug.Print RegExpTest("is.", "IS1 is2 IS3 is4")
End Sub

' Output
' 일치 위치: 0.  일치 길이: 3.
' 일치 위치: 4.  일치 길이: 3.
' 일치 위치: 8.  일치 길이: 3.
' 일치 위치: 12.  일치 길이: 3.

SubMathces Property

Match Object 개체의 하위 일치(submatches)를 반환합니다.

 

Syntax

object.SubMatches

 

object : 항상 Match 개체입니다.

 

설명
SubMatches 컬렉션은 개별 하위 일치 문자열을 포함하며, RegExp 개체의 Execute 메서드를 사용해야만 만들 수 있습니다. SubMatches 컬렉션의 속성은 읽기 전용입니다.

정규식이 실행될 때 하위 표현식이 캡처 괄호로 묶여 있으면 0개 이상의 하위 일치가 발생할 수 있습니다. SubMatches 컬렉션의 각 항목은 정규식이 찾아서 캡처한 문자열입니다.

다음 코드는 정규식 검색에서 SubMatches 속성을 가져오는 방법과 개별 멤버에 액세스하는 방법을 설명합니다.

Function SubMatchTest(inpStr As String) As String
    Dim oRe As Object
    Dim oMatch As Object
    Dim oMatches As Object
    Dim retStr As String
    
    Set oRe = CreateObject("VBScript.RegExp")
    
    ' 이메일 주소를 찾습니다 (완벽한 정규식이 아닙니다).
    oRe.pattern = "(\w+)@(\w+)\.(\w+)"
    
    ' Matches 컬렉션을 가져옵니다.
    Set oMatches = oRe.Execute(inpStr)
    
    ' Matches 컬렉션의 첫 번째 항목을 가져옵니다.
    Set oMatch = oMatches(0)
    
    ' 결과 문자열을 생성합니다.
    ' Match 객체는 전체 일치하는 문자열을 의미합니다 - someone@example.com.
    retStr = "이메일 주소: " & oMatch & vbCrLf
    
    ' 주소의 하위 일치 부분을 가져옵니다.
    ' someone
    retStr = retStr & "이메일 별칭: " & oMatch.SubMatches(0)
    retStr = retStr & vbCrLf
    
    ' example
    retStr = retStr & "조직: " & oMatch.SubMatches(1)
    
    SubMatchTest = retStr
End Function

Sub TestSubMatch()
    MsgBox SubMatchTest("Please send mail to someone@example.com. Thanks!")
End Sub

' Output
' 이메일 주소: someone@ example.com
' 이메일 별칭: someone
' 조직: example

 

Value Property

검색 문자열에서 찾은 일치 항목의 값 또는 텍스트를 반환합니다.

 

Syntax

object.Value

 

object : 항상 Match 개체입니다.

 

설명
다음 코드는 Value 속성의 사용법을 보여줍니다.

Function RegExpTest(patrn As String, strng As String) As String
    Dim regEx As Object
    Dim Match As Object
    Dim Matches As Object
    Dim s As String

    ' 정규 표현식 개체 생성.
    Set regEx = CreateObject("VBScript.RegExp")
    regEx.pattern = patrn
    regEx.IgnoreCase = True
    regEx.Global = True

    ' 검색 수행.
    Set Matches = regEx.Execute(strng)

    ' Matches 컬렉션 반복 처리.
    s = ""
    For Each Match In Matches
        s = s & "일치 위치: "
        s = s & Match.FirstIndex & ". "
        s = s & "일치 값: '"
        s = s & Match.Value & "'."
        s = s & vbCrLf
    Next

    RegExpTest = s
End Function

Sub TestRegExp()
    MsgBox RegExpTest("is.", "IS1 is2 IS3 is4")
End Sub

' Output
' 일치 위치: 0. 일치 값: 'IS1'.
' 일치 위치: 4. 일치 값: 'is2'.
' 일치 위치: 8. 일치 값: 'IS3'.
' 일치 위치: 12. 일치 값: 'is4'.

 

도움말 출처

 

Match Object

Table of contents Match Object Article 07/17/2015 In this article --> Provides access to the read-only properties of a regular expression match. A Match object can be only created using the Execute method of the RegExp object, which actually returns a coll

learn.microsoft.com

 

'Regular Expressions(정규표현식)' 카테고리의 다른 글

SubMatches 컬렉션  (0) 2023.08.21
Matches 컬렉션  (0) 2023.08.21
RegExp 개체  (0) 2023.08.20
정규 표현식 소개  (0) 2023.08.18