SAS - 正则表达式

发布时间 2023-07-20 20:57:22作者: Snoopy1866

SAS - 正则表达式

正则表达式(Regular Expression)是一种文本模式,可用于文本的匹配、查找和替换。Base SAS 内置了正则表达式的实现,并提供了一系列 PRX 函数及 CALL 子程序,便于对文本进行更为灵活的处理。

正则表达式的结构

正则表达式由普通字符和元字符组成。元字符用于匹配符合特定规则的字符集合,例如:数字、字母、标点符号等字符集合。

元字符又分为:基本元字符、定位符、限定符等等。

基本元字符

常用的基本元字符如下:

  • \d : 匹配数字0-9
  • \n : 匹配换行符
  • \num : 匹配第 num 个捕获的缓冲
  • \s : 匹配空白字符,包括空格、制表符等
  • \t : 匹配制表符
  • \w : 匹配任何单词字符、数字字符、下划线

例如:\d\d 将匹配两个连续的数字。

定位符

定位符用于限定匹配字符串的边界。

  • ^ : 匹配字符串的开头
  • $ : 匹配字符串的结尾
  • \b : 匹配一个单词的边界
  • \B : 匹配一个单词的非边界

例如:^apple$ 只能匹配单词 apple,这是因为使用了定位符,^ 限制匹配的单词只能以 a 开头,$ 限制匹配的单词只能以 e 结束。如果不加定位符,apple 不仅可以匹配单词 apple,还可以匹配单词 pineapple 中的 apple。

限定符

限定符用于限制某个匹配模式的重复次数。

  • * : 匹配 0 次或更多次
  • + : 匹配 1 次或更多次
  • ? : 匹配 0 次或 1 次
  • {n} : 匹配 n 次
  • {n,} : 匹配至少 n 次
  • {n,m} : 匹配至少 n 次,至多 m 次

例如:\d+ 表示匹配至少一个数字; ^app\w{0,2}$ 表示匹配以 app 开头的长度不超过 5 的字符串,包括 apple、apply 等。