Autohotkey RegExMatch 를 사용하여 특정 패턴 다 찾기
텍스트에서 일정한 패턴을 찾는 기술로 정규 표현식을 주로 사용합니다.
오늘은 autohotkey 정규표현식을 사용하여 일정한 패턴을 다 찾는 방법에 대해 소개하려 합니다.
autohotkey 에서 정규표현식을 사용 하여 문자의 패턴을 찾을 때 RegExMatch() 함수를 사용 합니다.
기본적인 사용방법은 아래 매뉴얼 페이지를 확인해 보시기 바랍니다.
https://autohotkey.com/docs/commands/RegExMatch.htm
RegExMatch() 함수는 지정한 위치로부터 지정한 패턴에 대해 하나 하나 찾는 기능은 있지만 한번에 다 찾는 기능은 없습니다.
따라서 다 찾고 싶다면 아래와 같이 코딩 할 수 있습니다.
testText 변수에 있는 텍스트 들 중에서 XX_ 와 공백이 있고 다음에 영어 문자가 나오는 패턴을 다 찾아 보겠습니다.
testText =
(
ddd XX_ abc
xxx XX_ def
ggg XX_ ghi
sdfsdf XX_ jkl
vcxvxcv XX_ mno
)
위 변수에 대해 아래와 같이 코딩 하면 위에서 얘기한 패턴을 다 찾을 수 있습니다.
GroupArraySearched 배열에는 XX_(공백) 뒤에 나오는 문자가 저장이되고~
GroupArraySearchedAllText 배열에는 XX_(공백)문자 가 다 저장 됩니다.
p := 1, m := ""
GroupArraySearched := []
GroupArraySearchedAllText := []
while p := RegExMatch(testText, "i)XX_\s*(\w+)", m, p + StrLen(m))
{
GroupArraySearched[A_Index] := m1
GroupArraySearchedAllText[A_Index] := m
}
Join(sep, params*) {
for index,param in params
str .= param . sep
return SubStr(str, 1, -StrLen(sep))
}
SearchedText := Join("`n", GroupArraySearched*)
MsgBox % SearchedText
SearchedTextAll := Join("`n", GroupArraySearchedAllText*)
MsgBox % SearchedTextAll
위 코드를 실행 시켜보면 다음과 같이 찾고자 하는 문자가 나오고~
XX_ 부터 찾고자 하는 문자까지를 다 찾은 결과가 나옵니다.