————新手上路,不足之处可后台留言指正————
在SAS编程中有时候会涉及到复杂文本字符的处理,这个时候正则表达式便是一个处理这些复杂文本的利器,包括不限于对字符串的搜索、替换、拆分。
正则表达式简介
Regular Expression
正则表达式是一种文本模式,由一系列字符和符号组成,用于匹配字符串中的字符组合。
- 正则表达式作为一种规则表达式,可以赋予程序文本处理和字符串匹配的能力。
- 正则表达式的基本组成元素包括:普通字符、元字符、限定符、括号等。可以构建复杂的匹配模式。
- 正则表达式在许多编程语言和软件中都有实现,是一种常用的文本处理工具。
正则表达式一般形如:
SAS中正则一般遵循以下语法格式:
‘/正则表达式/’
形如 ('/(?<=\.).*/')
很多人都在说正则是一个很好用的工具,但是不太好学,这里推荐一本书《正则表达式必知必会 》这一本足够入门正则表达式了,包括我写的正则的文章也是基于这本书的内容。另一本书《精通正则表达式》适合已经入门想更精进一步的同学,另外SAS help中关于正则的部分也是很好的学习内容。
正则基本匹配原则
对字符处理的第一步首先是能找到目标文本,就涉及到多种匹配的规则,所以接下来先讲正则表达式的匹配。
01 匹配单个字符(字符一一对应)
比如我们想找到 Ben 写出的正则表达式就是 Ben
这里使用的正则表达式是纯文本,它将匹配原始文本里的Ben。
原义字符和元字符
讲到这里需要引入 原义字符和元字符 的概念。
可以简单这样理解:
原义字符:指代本身的字符,比如正则中B就单指字母B。
元字符:就是指那些在正则表达式中具有特殊意义的专用字符,任何时候要在正则表达式中匹配元字符本身,都必须对它们进行转义。( \. )
原义字符若实现功能也需要进行转义。( \w )
以下是部分元字符及一些特殊含义的字符
常用的有特殊含义字符/元字符
方括号“[ ]”匹配指定一堆字符中的一个
以上表达式 ^ 代表单词开头, $ 代表单词结尾
[ ] 里面内容作为一个集合,匹配里面任意单词。
所以这个表达式的含义匹配三个字母,第一个字母a或e或i或o或u,第二个字母匹配a,第三个字母匹配t
“+”表示前一字符模式可以被重复1次或n次
“*”表示前一字符模式可以被重复0次或n次
“{x,y}”表示前一字符模式可以被重复x到y次
“{x,}”表示前一字符模式可以被重复至少x次
“( )”可以指定一堆字符来匹配一个模式
( )里面的内容可以视为一个整体进行出现的。
分支“|”用来指定几个规则只要匹配一个规则即成匹配,或的关系
示例
| 操作符是把位于它左边和右边的两个部分都作为一个整体来看待
19|20\d{2}解释为19或20\d{2}
02匹配一组字符
[0-9] 数字0到数组9之间的任意一个
[a-z] 字母a到字母z的任意一个
此时正则表达式可简化为如下:
03一些具备特定含义的字符
\加一些特定字符具备一些特定的含义,这些字符是区分大小写的
比如 \w 匹配一个字母 \d匹配一个数字
更多的见下表
示例
04 一些可进行重复匹配的字符
一些字符可以进行重复匹配
例如:
+ 前面字符至少出现一次
* 前面字符出现>=0次
?前面字符出现0或1次
更多的见下表
示例
如之前所述,也可以进行设置重复次数
示例
05位置匹配
通过一定的字符可以设定匹配的位置
更多的见下表
本次就先到这,下一篇会将继续讲解SAS中正则表达式(包括前后查找,贪婪匹配等)。
观众老爷们,么么哒
ψ(`∇´)ψ!