51 - [오토핫키] 정규식 RegExMatch(), 파싱 (5)
51 - [오토핫키] 정규식 RegExMatch(), 파싱 (5)
문자열관리를 통해서 찾고, 자르고, 바꾸고, 문자를 이리저리 고생시켰죠? 정규식은 문자, 혹은 문자 위치보다 문자열의 패턴을 읽어 분석합니다. 앞서 배운 문자열관리로 5~6줄의 스크립트 분량을 정규식을 사용하면 한줄로 끝내버릴 수 있을만큼 강력한 내장함수입니다. 흔히 정규식을 Haystack(건초더미)에서 NeedleRegEx(바늘)을 찾는다고 비유하는데 정말 그만큼 어렵습니다. |
|
|
문법
FoundPos := RegExMatch(Haystack, NeedleRegEx [, UnquotedOutputVar = "", StartingPosition = 1]) |
설명
FoundPosNeedleRegEx의 위치값. 첫 문자라면 1, 발견하지 못했을 경우 0을 돌려줍니다. |
Haystack검색할 내용을 담고 있는 변수의 이름. |
NeedleRegEx검색할 문자열 패턴 (검색어). 정규 표현식으로 옵션과 패턴을 기입할 수 있습니다. |
UnquotedOutputVarMode 1 (기본값) : 패턴 전체를 포함하는 Haystack을 저장할 변수의 이름. Mode 2 (위치와 길이) : 정규식 옵션에 P (대문자 P)가 있으면 전체 패턴의 글자 개수가 저장됩니다. (...) 부패턴이 있으면 위치와 길이가 의사배열로 저장 됩니다. 예를들어 변수의 이름이 Output이라면 OutputPos1에 위치값이 저장되고, OutputLen1에 글자수가 저장 됩니다. Mode 3 (일치 객체) : 정규식 옵션에 O (대문자 O)가 있으면 일치 객체가 UnquotedOutputVar에 저장됩니다. 아래 리스트 참조. |
StartingPosition검색을 시작할 위치. 기본값은 1 |
예제
애국가Data=
2. 남산 위에 저 소나무 철갑을 두른 듯
3. 가을 하늘 공활한데 높고 구름 없이
4. 이 기상과 이 맘으로 충성을 다하여
MsgBox, %Pos%`n(패턴 전체의 위치값)
RegExMatch(Data, "`n)바람(.*)", Output) ;`n줄 단위로 읽는 옵션을 추가
Pos=0 ;\d 는 숫자를 찾는 패턴입니다. MsgBox, %Output%`n(줄을 읽는 옵션에 숫자로 시작하는 줄을 읽음) |
Match Object (일치 객체)
옵션에 O (대문자 O)가 포함 되어있으면 다음과 같은 객체 방식으로 열람을 합니다. Match.Pos(N) : 패턴의 위치를 돌려줍니다. Match.Len(N) : 패턴의 글자 개수를 돌려줍니다. Match.Value(N) : 패턴을 돌려줍니다. Match.Name(N) : 부패턴의 이름을 돌려줍니다. Match.Count() : 부패턴의 개수를 돌려줍니다. Match.Mark() : 마지막 (*MARK:NAME)의 NAME을 돌려줍니다. Match[N] : N에 부패턴 번호나 이름을 사용할 수 있습니다. 혹은 위의 특성 이름일 수 있습니다. Match.N : 위와 같습니다. |