본문 바로가기
SAS/SAS 함수

【SAS 함수】 63. CALL RXCHANGE 함수

by 기서무나구물 2018. 11. 23.

포스팅 목차

    63. CALL RXCHANGE

     


    패턴이 일치하는 한 개 또는 다수의 문자열을 변환한다.

    Category: 문자열 비교 함수(문자열 매칭, Character String Matching)

     

    MAIN

    문 법


    CALL RXCHANGE
     (rx,times,old-string<,new-string>);

     

    Arguments

    rx

     

         는 RXPARSE함수에 의해 반환되는 인식자를 지정.
    times

     

         는 변경된 최대 숫자.
    old-string
    new-string

     


    참 고

    SAS regular 형식 은 RX로 시작하고, Perl regular형식은 PRX로 시작한다.

    좀 더 상세한 사항을 알고 싶으신 분은 PERL언어에 관하여 찾아보시기를 바랍니다.

     


    관련 함수

    함수명 함수내용
    CALL PRXCHANGE 지정한 패턴과 일치하는 문자열을 검색하여 검색된 부분을 변경하기 원하는 대체 문자열로 변경 작업을 수행한다.
    CALL PRXFREE 메모리에 할당된 Perl regular 표현식을 초기화 한다. 일반적으로 데이터 스텝이 종료되면 리소스가 초기화 된다.
    CALL PRXSUBSTR 패턴이 일치하는 문자열의 위치와 length를 반환한다.
    CALL RXCHANGE 패턴이 일치하는 한 개 또는 다수의 문자열을 변환한다.
    CALL RXFREE 다른 Regular 표현(RX)함수나 CALL 루틴에 의해 할당된 메모리를 초기화한다.
    CALL RXSUBSTR 패턴이 일치하는 문자열의 위치,length,점수를 확인한다.
    PRXMATCH 패턴 일치여부를 검색하고, 패턴이 발견된 첫 번째 위치를 반환한다.
    PRXPARSE Perl 정규식 함수에 의해 이용될 Perl 정규식 표현을 정의 한다.
    RXMATCH 문자열에서 패턴이 일치하는 첫 번째 위치를 반환한다.
    RXPARSE 문자열에서 패턴이 일치하는 첫 번째 위치를 반환한다.

     


    예 제

     

    예 제 1 :

    각각의 대문자 앞에 blank삽입하여 출력하자. 

    SAS Statements
    data Call_Rxchange1;
         input x :$15.;
         put x= $char15.; retain rx;
         if _n_=1 then rx=rxparse("<$u> TO ' ' =1");
         call rxchange(rx,5,x);
         put rx=; put x= $char15.;
    datalines;
    ThisIsATest
    ;

     

    Results
    x=ThisIsATest
    
    rx=1
    
    x=This Is A Test

     


    예 제 2 :

    문자열을 검색하여서 ‘bad cat’단어를 '******'로 변경하자.

    rxparse 함수에서 A TO B 의 형태는 A를 B로 변경의 의미이다. 

    SAS Statements
    data Call_Rxchange2;
         infile datalines truncover;
         input x $char50.;
    datalines;
    this is a bad story about a bad cat
    this is a cat story about a bad cat
    this is a bad story about a cat
    ;
    
    data new;
     set Call_Rxchange2;
         put x=;
         length y $ 50;
         rx = rxparse("'bad cat' to '******'"); 
         call rxchange(rx,1,x,y);
         put y= /;
    run;

     

    Results
    x=this is a bad story about a bad cat
    y=this is a bad story about a ******
    x=this is a cat story about a bad cat
    y=this is a cat story about a ******
    x=this is a bad story about a cat
    y=this is a bad story about a cat

     


    예 제 3 :

    변환작업을 5번을 실행하여서 문자열에서 HTML Tag문을 제거하여 출력하자. 

    SAS Statements
    data Call_Rxchange3;
         infile datalines truncover;
         input test $char100.;
         before=test;
         rx = rxparse(" $<5> to '' ");
         call rxchange(rx,5,test);
    datalines;
    <FONT SIZE=2 FACE="Courier New">Using RX functionality</FONT>
    <P><FONT SIZE=2 FACE="Courier New">Thank-you so much</FONT>
    ;
    run;

     

    Results
    test 
    Using RX functionality  Thank-you so much    
                             before
    <FONT SIZE=2 FACE="Courier New">Using RX functionality</FONT>
    <P><FONT SIZE=2 FACE="Courier New">Thank-you so much</FONT>

     


    SAS 함수(SAS Function) 리스트 링크

     

    엑셀(EXCEL)과 SAS 함수(SAS Function) 비교 리스트 링크

     

    SAS 데이터 스텝 구문 리스트(SAS Data Step Statement)
    반응형

    댓글