포스팅 목차
CALL PRXCHANGE
지정한 패턴과 일치하는 문자열을 검색하여 검색된 부분을 변경하기 원하는 대체 문자열로 변경 작업을 수행한다.
Category: | 문자열 비교 함수(문자열 매칭, Character String Matching) |
MAIN |
문 법
CALL PRXCHANGE (regular-expression-id, times, old-string <, new-string <, result-length <, truncation-value <, number-of-changes>>>>); |
Arguments
- regular-expression-id
- 는 PRXPARSE함수로 부터 반환된 숫자 패턴 인식자를 지정.
- times
- 는 검색 횟수를 지정.
- old-string
- 는 검색과 교체를 위한 문자 표현 지정.
- new-string
- 는 old-string을 변경하기 위한 결과를 반환하기 위한 문자 변수 지정.
- result-length
- 는 결과에 대한 문자의 수를 지정하는 숫자 변수.
- truncation-value
- 는 변경 작업의 결과에 의존하는 0과 1의 값.
0 : 만약 전체 교체 결과가 new-string의 length보다 더 길지 않은 경우.
1 : 만약 전체 교체 결과가 new-string의 length보다 더 긴 경우.
- number-of-changes
- 는 반환된 교체의 전체 숫자가 지정된 숫자 변수.
참 고
SAS regular 형식 은 RX로 시작하고, Perl regular형식은 PRX로 시작한다.
좀 더 상세한 사항을 알고 싶으신 분은 PERL언어에 관하여 찾아보시기를 바랍니다.
* PERL : 자료를 추출하고 그에 의거한 보고서를 작성하는데 사용하는 프로그래밍언어 가운데 하나이다.
관련 함수
함수명 | 함수내용 |
CALL PRXCHANGE | 지정한 패턴과 일치하는 문자열을 검색하여 검색된 부분을 변경하기 원하는 대체 문자열로 변경 작업을 수행한다. |
CALL PRXDEBUG | PERL 정규식이 컴파일 되는 과정과 패턴이 문자값과 일치 될 때 반환되는 값에 대한 정보를 제공한다. |
CALL PRXFREE | 메모리에 할당된 Perl regular 표현식을 초기화 한다. 일반적으로 데이터 스텝이 종료되면 리소스가 초기화 된다. |
CALL PRXNEXT | 문자열에서 지정한 패턴과 일치하는 패턴 검색 작업을 반복적으로 수행하여서 패턴과 일치하는 하위 문자열의 위치와 length를 반환한다. |
CALL PRXPOSN | capture 버퍼의 시작 위치와 length를 반환한다. |
CALL PRXSUBSTR | 패턴이 일치하는 문자열의 위치와 length를 반환한다. |
PRXCHANGE | 지정한 패턴과 일치하는 경우 변경 작업을 수행한다. |
PRXMATCH | 패턴 일치여부를 검색하고, 패턴이 발견된 첫 번째 위치를 반환한다. |
PRXPAREN | 패턴이 일치하는 마지막 캡쳐 버퍼의 값을 반환한다. |
PRXPARSE | Perl 정규식 함수에 의해 이용될 Perl 정규식 표현을 정의 한다. |
PRXPOSN | capture 버퍼에 할당된 값을 반환한다. 캡쳐 버퍼는 prxparse를 통해 패턴 선언시 괄호를 지정하여 나눌수 있다. |
예 제
예 제 1 :
TEXT 변수에서 ~at의 패턴을 가진 단어들을 tree로 교체한다.
* 패턴을 찾고 교체, TIMES(수행횟수)의 인수가 -1 이기 때문에 교체는 가능하면 계속 수행;
SAS Statements |
data _null_;
length text $ 46;
RegularExpressionId = prxparse('s/[crb]at/tree/');
text = 'The woods have a bat, cat, bat, and a rat!';
call prxchange(RegularExpressionId, -1, text);
put text;
run;
Results |
The woods have a tree, tree, tree, and a tree!
예 제 2 :
cat나 Cat에 해당하는 문자열을 Mouse로 반환한다. 그와 더불어 length,
TRUNC(새변수의 length가 구변수 length보다 크면 0, 그 반대의 경우 1을 반환한다.),변환횟수를 반환한다.
SAS Statements |
DATA PRXCHANGE2;
INPUT TEXT $CHAR40.;
LENGTH NEW_TEXT $ 80;
IF _N_ = 1 THEN MATCH = PRXPARSE("s/[Cc]at/Mouse/");
RETAIN MATCH;
CALL PRXCHANGE(MATCH,1,TEXT,NEW_TEXT, R_LENGTH,TRUNC,N_OF_CHANGES);
IF TRUNC THEN PUT "Note: NEW_TEXT was truncated";
DATALINES;
The Cat in the hat
There are two cat cats in this line
;
Results |
TEXT NEW_TEXT
The Cat in the hat The Mouse in the hat
There are two cat cats in this line There are two Mouse Mouses in this lineR_LENGTH TRUNC N_OF_CHANGES
42 0 1 44 0 2
SAS 함수(SAS Function) 리스트 링크 |
엑셀(EXCEL)과 SAS 함수(SAS Function) 비교 리스트 링크 |
SAS 데이터 스텝 구문 리스트(SAS Data Step Statement) |
반응형
'SAS > SAS 함수' 카테고리의 다른 글
【SAS 함수】 48. CALL PRXFREE 함수 (0) | 2018.11.20 |
---|---|
【SAS 함수】 47. CALL PRXDEBUG 함수 (0) | 2018.11.20 |
【SAS 함수】 45. CALL POKELONG 함수 (0) | 2018.11.20 |
【SAS 함수】 44. CALL POKE 함수 (0) | 2018.11.20 |
[SAS 함수] 43. CALL MODULEI 함수 (0) | 2018.11.20 |
댓글