본문 바로가기
Autohotkey/강좌

[Autohotkey] 38. 정규식 - RegExMatch()

by 슈퍼닷 2013. 6. 9.
반응형

RegExMatch 는 정규식이라 불리는 파싱 명령어 입니다.

정규식은 모습이 디게 어려워 보여요.  그래도 쓰는 이유가 무엇이냐면 더 간편하게 파싱을 하기 위해서이죠.

StringGetPos 와  같이 쓰이는 파싱 명령어는 정규식 한줄로 될걸 7~8 줄 이상으로 쓰이는 경우가 많아요.

그래서 정규식을 쓰는거에요.

 

일단 함수 원형은 이렇습니다.

 

찾은위치 := RegExMatch(문자열,찾을문자열[,변수 = "",시작할위치 = 1])

[] 안의 내용은 생략 가능합니다.

 

일단 정규식 옵션부터 알아야되요. 그래야 정규식을 쓰죠. 대충 필요한것만 알면되요.

.*  (.*)  ?  i) \C $ \d \w [0-9] +  .  [A-Z]  [a-z] 이런거요.

 

밑에 요약처리 해놓은것은 보셔야 정규식 할수가 있을거에요.

정규식 참조 번역 ( 등등등 여러가지 )

뒷부분으로 갈수록 영어로 되어있습니다.

 

간단한 예제 번역

 

FoundPos := RegExMatch("xxxabc123xyz","abc.*xyz") ; 4가 반환된다.  매치되서 찾아진곳의 위치이다. .* 에의해 123이 .*에 해당된다.

FoundPos := RegExMatch("abc123123", "123$") ; 7을 반환한다. 왜냐하면 $은 맨끝과 매치해서 끝의 123 과 매치하게 되서다.

FoundPos := RegExMatch("abc123", "i)^ABC") ; 1을 반환한다. 대소문자 구분 X옵션을 통해 찾아져서다.

FoundPos := RegExMatch("abcXYZ123", "abc(.*)123", SubPat) ;  1이 반환되며 SubPat에는 abcXYZ123 이 위치하게 된다. SubPat1 에는 XYZ 가 저장된다.

FoundPos := RegExMatch("abc123abc456", "abc\d+", "", 2) ; 7을 반환한다. 처음 발견될 123이 아닌 2에서 부터 시작해서 456쪽이 발견된것이다.

 

기초적인 정규식에서는

 

위치 := RegExMatch("abc123xyz","abc(.*)xyz",var)

msgbox,% var1

결과가 123 이라는 정도만 알면된다.

 

그리고 따옴표를 패턴안에 넣으면 에러가 뜬다.

오핫 정규식에서 \를 쓰면 문자 그대로 쓰게 된다고 한다.

하지만 \" 를 써도 에러가 뜬다.

\C 를 쓰면 " 의 효과를 볼 수 있을 것이다.

 

그러므로 이 기초적인 정규식에서는 (.*) 와 \C 만 알아도 사실 문제없이 잘 할수있을거에요 [0-9] 나 [a-zA-Z] + 도 알아야 되고요.

 

\C를 쓴 예제도 한번 그럼 보죠.

 

Haystack="블로그"123456"그로블"

FoundPos := RegExMatch(Haystack,"블로그\C(.*)\C그로블",var)  ;; var1 에 123456 이 저장된다.

 

 

RegExReplace() 에 대해서는 설명하지 않겠습니다.

RegExMatch 와 옵션은 똑같고

함수 형태만 아시면 쉽게 쓰실수 있어요.

반응형

댓글