在SAS中使用正则表达式
(2010-04-05 20:46:32)| 标签: sasit | 分类: SAS | 
SAS中可以通过prxparse,prxmatch,prxchange,prxsubstr和prxposn等函数(或Call routine,function和Call routine的区别是后者可以通过参数返回值的形式产生新变量)来实现用正则表达式处理数据的要求。prxparse函数以正则式为输入生成一个SAS内部用于指代改正则式的id。prxmatch函数以正则式id和需要匹配的字符串为输入来进行正则匹配,如果匹配成功,则返回1,没有匹配返回0。如果匹配成功,可以使用prxposn函数来获取需要的反向匹配结果,输入为4个参数,第一个为正则式id,第二个是反向匹配的序号,第三个和第四个是输出参数,函数执行结束他们会被赋值为反向匹配在原匹配字符串中的位置和长度;这样,利用这两个返回的值并结合substr就可以得到反向匹配字符串。下面是一个具体的例子:
 
data ntest;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
run;
 
prxchange子程序(Call routine)用于实现查找替换,也就是Perl中s/original/new/的功能。Prxchange常用的两种形式是:
call prxchange(pattern_id, n, variable)
call prxchange(pattern_id, n, variable, newvariable)
n表示匹配和替换的次数,如果是-1就表示替换全部匹配。Variable表示需要进行匹配替换的原始字符串,如果不指定newvariable,则替换之后的新字符串将覆盖原字符串,否则存储在newvariable中。举例如下:
 
data ntest;
 
 
 
 
 
 
 
 
 
 
 
 
run;

 加载中…
加载中…