SAS学习笔记66 SAS正则表达式
在SAS里,正则表达函数以PRX(Perl Regular Expression)开头
PRXMATCH()
这个函数的作用是:看regular-expression在string中的位置
"/SA/"这个双引号是SAS的语法,但里面的内容是标准的Perl正则表达式,那个斜杠 / 是默认的Perl分隔符。我们可以在两个斜杠//之间放置一些元字符(metacharacter),来简化一些很复杂的表达
metacharacter(元字符)
metacharacter用来简化表达某种意思,比如在word中我们都知道t代表的是制表符,那么在SAS正则表达式中也类似有:
^ 代表一段话的开头,
$ 代表一段话的结束,
s 代表的是一个空格(space),
i 代表不区分大小写,
d 匹配任何某1个以上数位
……
他们就是metacharacter
Metacharacter | Description | Examples |
* | 将其前字符进行0个或多个匹配 |
cat* 匹配“cat”,“cats” c(at)* 匹配"c", "cat", "catatat" |
+ | 将其前字符进行1个或多个匹配 | \d+ 匹配一个或多个数字 |
? | 将其前字符进行0个或1个匹配 | hello? 匹配"hell","hello" |
. | 只匹配一个字符。匹配除"\n"之外的任何单个字符。如果想匹配任意字符[.\n] | r.n 匹配"ron","run","ran" |
\d | 匹配一个数字字符。[0-9] | \d\d\d 匹配任何三位数字 |
\D | 匹配一个非数字字符。[^0-9] | \D\D 匹配"xx", "ab",%%" |
^ | 匹配输入字符串的开始位置 | ^cat 匹配"cat","cats"但不匹配"the cat" |
$ | 匹配输入字符串的结束位置 | cat$ 匹配"the cat"但不匹配"cat in the hat" |
[a-z] | 表示a-z任意一个字符 | |
[0-9] | 表示0-9任意一个数字 | |
[0-9a-zA-Z] | 表示0-9 a-z A-Z任意一个字符 | |
[abcd] | 表示a 或b 或c 或d | |
[1234] | 表示1 或2 或3 或4 | |
[^a-z] | 表示匹配除了a-z之外的任意一个字符 | |
\w | 匹配包括下划线的任何单词字符。[0-9a-zA-Z_] | |
\W | 匹配任何非单词字符。[^\w] | |
\s | 匹配任何空白字符 | |
\S | 匹配任何非空白字符 | |
\b | 匹配一个单词边界 | |
\B | 匹配非单词边界 | |
{n} | 匹配前面的子表达式n次 | |
{n,} | 匹配前面的子表达式n次或更多次 | |
{n,m} | 匹配前面的子表达式n次或更多次,但不超过m | |
x|y | 匹配x或y | c(a|o)t 匹配"cat","cot" |
\ |
用于匹配某些特殊字符 需要转义的字符有: ( ) [ ] { } \ . / * + ? ^ $ |
\d\d\d\) 匹配"123)" |
\1 | 与前面的捕获缓冲区匹配,称为回引用 | (\d\D\d)\1 匹配“9a99a9”而不是“9a97b7” |