포스팅 목차
o PRXPOSN
capture 버퍼에 할당된 값을 반환한다. 캡쳐 버퍼는 prxparse를 통해 패턴 선언시 괄호를 지정하여 나눌수 있다.
Category: | 문자열 비교 함수(문자열 매칭, Character String Matching) |
문 법
PRXPOSN (regular-expression-id, capture-buffer, source) |
Arguments
regular-expression-id
는 PRXPARSE 함수에 의해 반환되는 인식자.
참 고
펄 쿡북(한빛미디어)을 참조하세요.
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 :
prxparse함수를 통하여 , 로 나누어 앞부분과 뒷부분에 해당되는 값이 캡쳐버퍼 1과 2에 각각 할당되게 된다.
prxposn함수를 통하여서 캡쳐버퍼 1과 2의 값을 각각 가져오게 된다.
SAS Statements |
data ReversedNames;
input name & $32.;
datalines;
Jones, Fred
Kavich, Kate
Turley, Ron
Dulix, Yolanda
;
data FirstLastNames;
length first last $ 16;
keep first last;
retain re;
if _N_ = 1 then re = prxparse('/(\w+), (\w+)/');
set ReversedNames;
if prxmatch(re, name) then do;
* 첫번째 규칙;
last = prxposn(re, 1, name);
first = prxposn(re, 2, name);
end;
run;
Results |
first last
Fred Jones
Kate Kavich
Ron Turley
Yolanda Dulix
예 제 2 :
캡쳐버퍼 1,2,3에 각각 할당된 값을 찾아온다. '/(\S+)\s+([^\s]+\s+)?(\S+)/o' : (비공백문자) blank ((비공백문자가 한 개이상)Blank) (비공백문자한개이상) 의 형태를 가지는 것을 찾게 된다.
여기서, 캡쳐버퍼1은 비공백문자가 한 개 이상
캡쳐버퍼2는 공백문자아닌 문자가 한 개 이상
캡쳐버퍼3은 비공백문자가 한 개 이상
으로 이루어진다. (/o는 패턴을 한번만 컴파일 한다.)
SAS Statements |
data old;
input name $60.;
datalines;
Judith S Reaveley
Ralph F. Morgan
Jess Ennis
Carol Echols
Kelly Hansen Huff
Judith
Nick
Jones
;
data new;
length first middle last $ 40;
keep first middle last;
re = prxparse('/(\S+)\s+([^\s]+\s+)?(\S+)/o');
set old;
if prxmatch(re, name) then do;
first = prxposn(re, 1, name);
middle = prxposn(re, 2, name);
last = prxposn(re, 3, name);
output;
end;
run;
Results |
first middle last
Judith S Reaveley
Ralph F. Morgan
Jess Ennis
Carol Echols
Kelly Hansen Huff
SAS 함수(SAS Function) 리스트 링크 |
엑셀(EXCEL)과 SAS 함수(SAS Function) 비교 리스트 링크 |
SAS 데이터 스텝 구문 리스트(SAS Data Step Statement) |
반응형
'SAS > SAS 함수' 카테고리의 다른 글
【SAS 함수】 335. PUT (0) | 2021.10.10 |
---|---|
【SAS 함수】 334. PTRLONGADD (0) | 2021.10.10 |
【SAS 함수】 332. PRXPARSE (0) | 2021.10.09 |
【SAS 함수】 331. PRXPAREN (0) | 2021.10.09 |
【SAS 함수】 330. PRXMATCH (0) | 2021.10.09 |
댓글