프날 오토핫키 강좌  v2

⚠ 이 강좌는 오토핫키 v2를 다룹니다

지금 보시는 강좌는 과거 오랜 시간동안 알려진 오토핫키(v1.1)의 차세대 버전인 오토핫키 v2를 다루고 있습니다.
만약 구버전인 '오토핫키 v1.1'의 강좌를 찾으신다면 프날 오토핫키 강좌(https://pnal.kr)를 봐주시면 되지만, 새로 오토핫키를 배우신다면 v2 버전을 배우시는 것을 강력히 추천드립니다.

90. RegExReplace


정규식을 통한 '검색'을 했던 RegExMatch에 이어서, 이번엔 '치환'을 맡는 RegExReplace를 배워보겠습니다.

RegExReplace

RegExReplace는 오토핫키에서 정규식을 이용한 치환을 하는 함수입니다. 예전에 배웠던 StrReplace와 동일한 기능을 하는데, 정확한 Needle이 아니라 정규식을 이용하여 일치하는 패턴 부분을 전부 바꿀 수 있다는 장점이 있습니다.

RegExReplace(Haystack, NeedleRegEx [, Replacement, &OutputVarCount, Limit, StartingPos])
RegExReplace 함수의 원형

매개변수

  • Haystack: 전체 문자열입니다.
  • NeedleRegEx: Replacement로 변환될 정규식 패턴입니다.
  • Replacement: 바뀔 문자열입니다. 생략시 매칭된 부분이 제거됩니다.
  • &OutputVarCount: 몇 부분을 치환했는지 그 개수가 담길 변수의 참조입니다.
  • Limit: 최대 몇 개 부분을 치환할지 그 제한 개수입니다.
  • StartingPos: 치환을 시작할 위치입니다.

반환값

치환된 문자열이 반환됩니다.

복잡해보이지만 어디서 많이 봤던 매개변수죠? Haystack에 넣은 문자열에서 NeedleRegEx를 찾아서 Replacement로 바꿔주는, StrReplace와 굉장히 유사합니다. 또 &OutputVarCount와 Limit도 StrReplace에 있던 매개변수니 따로 설명하지 않겠습니다. StartingPos 역시 RegExMatch에 있던 매개변수입니다.

Replacement엔 기존 문자열의 부분을 그대로 다시 넣을 수 있는(이를 이용하여 전체 일치한 패턴 중에서 일부만 치환할 수 있습니다.) '역참조' 기능이 있는데, 기초 강좌인 이곳에선 설명하지 않겠습니다. 필요시 오토핫키 공식 문서의 RegExReplace 문서를 참고하세요.

실습

다시 한번 말씀드리지만 정규식은 연습 또또 연습! 경험만이 실력을 늘릴 수 있습니다.

1. 숫자만 남기고 모든 글자 지우기

"서울-00차-0000" 에서 숫자만 남기고 나머지를 모두 지우기

1haystack := "서울-00차-0000"
2replacedString := RegExReplace(haystack, "[^0-9]")
3MsgBox(replacedString)
예제 1. 숫자를 제외한 모든 문자 지우기

[^0-9] 패턴 해석하실 수 있으신가요? 0부터 9까지의 모든 글자(즉, 모든 숫자겠죠)의 반대 범위(^)를 말하는 패턴입니다. Replacement가 생략되었으므로 숫자를 제외한 모든 글자를 삭제하겠네요.

2. 이메일 주소에서 도메인 바꾸기

contact@xxxxxxx.xxxx을 contact@example.com으로 바꾸기
단, xxxxxxx.xxxx 부분은 어떤 문자든지 올 수 있다.

1haystack := "contact@xxxxxxx.xxxx"
2replacedString := RegExReplace(haystack, "@(.*)", "@example.org")
3MsgBox(replacedString)
예제 2. 도메인 주소 바꾸기

어렵지 않죠? @(.*) 패턴에 의해 @기호를 포함하여 그 뒤의 모든 글자가 매칭됩니다. 예제의 haystack에서는 @xxxxxxx.xxxx이 매칭되는데, 이를 @example.org로 바꿔줍니다. 쉽죠?

정규식은 너무 급하게 배울 필요가 없습니다. 지금 이해가 안된다면 다음에 필요할 때 하나씩 익히셔도 됩니다. 굳이 이 부분을 이해하고 넘어가지 않아도 좋으니, 조금만 더 힘내봅시다!

질문하러 가기