⚠ 이 강좌는 오토핫키 v2를 다룹니다
지금 보시는 강좌는 과거 오랜 시간동안 알려진 오토핫키(v1.1)의 차세대 버전인 오토핫키 v2를 다루고 있습니다.
만약 구버전인 '오토핫키 v1.1'의 강좌를 찾으신다면 프날 오토핫키 강좌(https://pnal.kr)를 봐주시면 되지만,
새로 오토핫키를 배우신다면 v2 버전을 배우시는 것을 강력히 추천드립니다.
90. RegExReplace
마지막 수정일: 2024-03-17
정규식을 통한 '검색'을 했던 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" 에서 숫자만 남기고 나머지를 모두 지우기
1 haystack := "서울-00차-0000"
2 replacedString := RegExReplace(haystack, "[^0-9]")
3 MsgBox(replacedString)
[^0-9]
패턴 해석하실 수 있으신가요?
0부터 9까지의 모든 글자(즉, 모든 숫자겠죠)의 반대 범위(^)를 말하는 패턴입니다.
Replacement가 생략되었으므로 숫자를 제외한 모든 글자를 삭제하겠네요.
2. 이메일 주소에서 도메인 바꾸기
contact@xxxxxxx.xxxx을 contact@example.com으로 바꾸기
단, xxxxxxx.xxxx 부분은 어떤 문자든지 올 수 있다.
1 haystack := "contact@xxxxxxx.xxxx"
2 replacedString := RegExReplace(haystack, "@(.*)", "@example.org")
3 MsgBox(replacedString)
어렵지 않죠? @(.*)
패턴에 의해 @기호를 포함하여 그 뒤의 모든 글자가 매칭됩니다.
예제의 haystack에서는 @xxxxxxx.xxxx이 매칭되는데, 이를 @example.org로 바꿔줍니다.
쉽죠?
정규식은 너무 급하게 배울 필요가 없습니다. 지금 이해가 안된다면 다음에 필요할 때 하나씩 익히셔도 됩니다. 굳이 이 부분을 이해하고 넘어가지 않아도 좋으니, 조금만 더 힘내봅시다!