52 - [오토핫키] 정규식 RegExReplace(), 파싱 (6)

    또 다른 정규식인 RegExReplace()입니다. StringReplace처럼 문자열을 새 문자열로 교체하는 역할인데 정규식인만큼 패턴을 사용합니다. RegExMatch()처럼 패턴을 찾아내는 역할을 하기도 하지만 사용법에 있어서는 다소 차이를 보이므로 문법을 잘 비교해 보셔야 합니다.

     

     

    문법

    NewStr := RegExReplace(Haystack, NeedleRegEx [, Replacement = "", OutputVarCount = "", Limit = -1, StartingPosition = 1])

     

    설명

    NewStr

    패턴을 찾아 교체한 내용을 돌려줍니다. 교체가 필요하지 않으면 Haystack이 그대로 반환됩니다.

    Haystack

    검색할 내용을 담고 있는 변수의 이름.

    NeedleRegEx

    검색할 문자열 패턴 (검색어). 정규 표현식으로 옵션과 패턴을 기입할 수 있습니다.

    Replacement

    패턴을 찾아 교체될 새 문자열. 정규식이 아닌 평범한 텍스트. $0 (전체패턴), $1 (첫번째 부패턴) ... 등의 역참조를 사용할 수 있습니다.

    OutputVarCount

    교체가 일어난 횟수를 저장할 변수의 이름.

    Limit

    생략하면 기본값은 -1이며, 패턴에 대해 모두 새 문자열로 교체합니다. 허용할 최대 숫자를 지정하면 그 뒤로는 교체하지 않습니다.

    StartingPosition

    검색을 시작할 위치. 기본값은 1

     

     

    예제

    애국가

    Data=
    (
    1. 동해물과 백두산이 마르고 닳도록
    하느님이 보우하사 우리나라 만세
    무궁화 삼천리 화려 강산
    대한 사람 대한으로 길이 보전하세

     

    2. 남산 위에 저 소나무 철갑을 두른 듯
    바람 서리 불변함은 우리 기상일세
    무궁화 삼천리 화려 강산
    대한 사람 대한으로 길이 보전하세

     

    3. 가을 하늘 공활한데 높고 구름 없이
    밝은 달은 우리 가슴 일편단심일세
    무궁화 삼천리 화려 강산
    대한 사람 대한으로 길이 보전하세

     

    4. 이 기상과 이 맘으로 충성을 다하여
    괴로우나 즐거우나 나라 사랑하세
    무궁화 삼천리 화려 강산
    대한 사람 대한으로 길이 보전하세
    )


    Number := RegExReplace(Data, "[^\d]")  ;숫자만 남기고 모두 지웁니다.
    MsgBox, %Number%
    Replace := RegExReplace(RegExReplace(Data, "\d.", "◆"), "`n)(◆).*", "$1 애국가", , 2)  ;숫자와 .을 ◆로 바꿔준 후 ◆로 시작하는 줄 중에 2번째 까지만 부패턴을 역참조 하며 애국가 라고 바꿔줍니다. 
    MsgBox, %Replace%
    Space := RegExReplace(Data, "\s")  ;모든 공백을 지웁니다.
    MsgBox, %Space%

     

     

     

     

     

     

    Posted by 옹봉이