VB(A)

[정규식] 단어 들어 있는 문장찾기

당근쨈 2019. 6. 3. 14:25

정규식을 이용하면 문장 나누기가 쉬워집니다.

https://cafe.naver.com/excelmaster/164935 에 올라온 질문입니다.

특정 단어가 포함된 문장을 출력하는 내용입니다.

정규식을 이용해 문장을 추출한 후 문장을 순환하며 단어를 골라내는 흐름입니다.

190530_단어 들어 있는 문장찾기_v1s.xlsm
0.02MB

 

Option Explicit
Function FindText(MySub As String, MyText As StringAs String
    Dim i As Integer
    Dim v As Variant
    
    '문장 단위로 끊음
    v = GetText(MySub)
    
    '단어가 포함된 문장 추출
    For i = 0 To UBound(v) + 1
        If InStr(1, v(i), MyText, vbTextCompare) Then
            FindText = v(i)
            Exit Function
        End If
    Next
End Function
Function GetText(tmp As StringAs Variant
'정규식을 활용하여 마침표, 물음표, 느낌표 기준으로 문장을 끊어주는 사용자정의 함수입니다.
    Dim Matches As Object
    Dim i As Integer
    Dim v() As String
    With CreateObject("Vbscript.regexp")
    
        .Global = True
        .ignorecase = True
        .Pattern = "(.+?[.?!])" '마침표, 물음표, 느낌표로 문장 단위로 나눕니다.
        
        If .test(tmp) Then
            Set Matches = .Execute(tmp)
            
            ReDim v(Matches.Count - 1)
            
            For i = 0 To UBound(v)
                v(i) = Trim(Matches(i))
            Next
            
            GetText = v
            
        End If
    
    End With
    
End Function
 
cs