본문 바로가기
SAS/SAS 함수

【SAS 함수】 364. RXPARSE

by 기서무나구물 2021. 10. 10.

포스팅 목차

    o RXPARSE

     


    문자열에서 패턴이 일치하는 첫 번째 위치를 반환한다.

    Category: 문자열 비교

     


    문 법


    rx=RXPARSE (pattern-expression)

    Arguments

         rx는 RXPARSE 함수에 의해 반환되는 숫자값.

     


    참 고

    PRXPARSE(PERL)함수와 유사하다. 자세한 사항은 도움말을 참조바랍니다.

    *  이전 패턴의 0개 이상 찾는다.

    - cat*은 ‘cat','cats','catanddog'와 일치한다.
    - c(at)*은 ‘c','cat','catatat'와 일치한다.
    +  이전 패턴의 1개 이상 일치하는 것을 찾는다.

    - \d+는 한 개 이상의 숫자와 일치한다.
    ?  정확하게 한 개 문자를 찾는다.

    - r?n 은 ‘ron','run','ran'과 일치한다.
    :  0개 이상 문자를 찾는다.

    - a:b 는 “axb","ab"와 일치한다.
    $d 또는 $D  숫자(0~9)를 찾는다.

    - $d$d$d는 3자리 숫자와 일치한다.
    $a 또는 $A  대소문자를 찾는다.

    - $a$a는 “xx","ab”.“XX"와 일치한다.
    ^  패턴과 일치하지 않는 것을 찾는다.

    - ^d는 “x","%"와 일치한다.(숫자가 아닌 문자)
    $‘xyz'  따옴표 안의 문자중 하나를 찾는다.

    - ca$'tr'는 ‘cat','car'와 일치한다.
    $‘a-e'  a-e까지 문자와 일치한다.

    - $‘a-e'$a+ 는 ’adam','edam','car'와 일치한다.
    $‘a-eA-E'  a-e 또는 A-E 문자와 일치한다.

    - $‘a-eA-E'$a+ 는 ’Adam','edam','B13'과 일치한다.
    x|y  x 또는 y와 일치한다.

    - c(a|o)t 는 ‘cat','cot'와 일치한다.
    $w  공백 문자와 일치한다.

    - $d+$w+$d+ 는 “123   4”와 일치한다.
    ‘(’  ( 와 일치한다.

    - ‘(’$d$d$d')' 는 ‘(123)’과 일치한다.
    ‘)’  ) 와 일치한다.
    $u 또는 $U  대문자와 일치한다.

    - $u$u$u 는 ‘ABC'와 일치한다.
    $l 또는 $L  소문자와 일치한다.

    - $l$l 는 ‘ab'와 일치한다.

     


    관련 함수

    함수명 함수내용
    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 :

    to에 따라서 ;(semicolon)를 찾아서 Blank로 대체한다.

    SAS Statements
    data support;
         input id name $ 6-35;
    datalines4;
    3452 Ranklin, A.
    9932 Patriot, L.;
    3221 Ferraro, M.; Sandobol, S.
    1228 Dietz, J.; Molina, K.;
    ;;;;
    
    data support2 (drop=rx);
     set support;
         rx=rxparse("$';' to ' '");
         call rxchange(rx,999,name);
    run;

     

    Results
     id         name
    3452    Ranklin, A.
    9932    Patriot, L.
    3221    Ferraro, M.  Sandobol, S.
    1228    Dietz, J.  Molina, K.

     


    예 제 2 :

    ‘x z'의 형태를 찾아서 ‘ABC(?에 해당하는 문자)@#%’형태로 변경을 한다.

    여기서 <>(angle bracket)은 tag sets으로 칭하고, 첫 번째 tag set은 To 뒤에서 =1에서 사용되고, 두 번째 tag set은 =2에서 사용되는 형태이다.

    SAS Statements
    data test;
         input string $;
    datalines;
    abcxyzpq
    xyyzxyZx
    x2z..X7z
    ;
    
    data _null_;
     set;
         length to $20;
         if _n_=1 then rx=rxparse("` x < ? > 'z' to ABC =1 '@#%'");
         retain rx;
         drop rx;
         put string=;
    
         match=rxmatch(rx,string);
         put @3 match=;
    
         call rxsubstr(rx,string,position);
         put @3 position=;
    
         call rxsubstr(rx,string,position,length,score);
         put @3 position= Length= Score=;
    
         call rxchange(rx,999,string,to);
         put @3 to=;
    
         call rxchange(rx,999,string);
         put @3 'New ' string=;
    run;

     

    Results
    string  
    abcxyzpq  
    xyyzxyZx  
    x2z..X7z

     


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

     

    SAS 함수(SAS Function) 리스트 링크
    반응형

    'SAS > SAS 함수' 카테고리의 다른 글

    【SAS 함수】 366. SCAN  (0) 2021.10.10
    【SAS 함수】 365. SAVING  (0) 2021.10.10
    【SAS 함수】 363. RXMATCH  (0) 2021.10.10
    【SAS 함수】 362. ROUNDZ  (0) 2021.10.10
    【SAS 함수】 361. ROUNDE  (0) 2021.10.10

    댓글