SAS 正则
1. 起手式
a = prxmatch( "m/正则/" , 字符串); m可有可无,只是说明这是匹配。返回目标字符串位置
b = prxchange( 's/ < / lt /', -1, str ); S必须有,表明这是替换。-1是替换所有符合要求字符,1是替换一个,2是替换2个,如果一个字符串有多个目标字符。
b = prxchange('s/ (\w+) , (\w+)/ $2 $1 /', str);目标字符串调换位置。
data _null_; input ; _infile_ = prxchange('s/</</',2,_infile_);
* 把 < 换成< ; put _infile_; datalines; x + y < 15 x < 10 < y y < 11 < y < z ; run; data names; name='Jones, Fred'; output; name='Kavich, Kate'; output; name='Turley, Ron'; output; name='Dulix, Yolanda'; output; run; /* Reverse last and first names */ data ReversedNames; set names; name=prxchange('s/(\w+), (\w+)/$2 $1/', -1, name); put name; run;
2. 常用规则
/ str / 包含str
/ ^str / 以str开头,字符串是整个字符串,而不是字符中某个单词
/ str$ / 以str结尾,字符串是整个字符串,而不是字符中某个单词
/ str /i 忽略大小写
/ \d\d\d / 三位数字
/ \d\d\d? / 两位或三位数字,?让前面的d成为可选。出现零次或一次
/ \d\d\d+ / 三位或更多位数字。出现一次或更多次。
/ \d\d\d* / 连续出现0个或多个。
/ \d{n} / 连续出现n次
/ \d{n,} / 连续出现n次或更多次
/ \d{n,m} / 连续出现n次到m 次
/ a.b / .是匹配一切,acb, aob
/ [1-9] / 匹配1-9
/ A-Z / 匹配A - Z
/ a-z / 匹配 a - z
/ (2|3)\d / |或,2或3,再加一位数字
/ 2|3\d / |或,2,或3再加一位数字。3\d是一个整体
/ [^a-e] / 除了 a-e之外的任意字符
/ .* / .匹配任意字符,除换行符之外,.*匹配一切
/ \( / 匹配括号
\s:用于匹配单个空格符,包括tab键和换行符;
\S:用于匹配除单个空格符之外的所有字符;
\d:用于匹配从0到9的数字;
\w:用于匹配字母,数字或下划线字符;
\W:用于匹配所有与\w不匹配的字符;
. :用于匹配除换行符之外的所有字符
标记:
i: 忽略大小写
g:全局匹配。prxmatch中不支持。
s:加上s后,.无可限制,啥都匹配,包含换行符
本文来自博客园,作者:Iving,转载请注明原文链接:https://www.cnblogs.com/SAS-T/p/15491469.html