1 SAS中的正则表达式(一)

————新手上路,不足之处可后台留言指正————

在SAS编程中有时候会涉及到复杂文本字符的处理,这个时候正则表达式便是一个处理这些复杂文本的利器,包括不限于对字符串的搜索、替换、拆分。

正则表达式简介

Regular Expression

正则表达式是一种文本模式,由一系列字符和符号组成,用于匹配字符串中的字符组合。

  1. 正则表达式作为一种规则表达式,可以赋予程序文本处理和字符串匹配的能力。
  2. 正则表达式的基本组成元素包括:普通字符、元字符、限定符、括号等。可以构建复杂的匹配模式。
  3. 正则表达式在许多编程语言和软件中都有实现,是一种常用的文本处理工具。

正则表达式一般形如:

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中正则表达式(包括前后查找,贪婪匹配等)。

观众老爷们,么么哒

ψ(`∇´)ψ!

  • 20
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
SAS 正则表达式可以通过 `PRX*` 函数来使用。下面是一些常用的正则表达式函数及其用法说明: 1. `PRXPARSE` 函数:用于将正则表达式模式编译为一个正则表达式对象(pattern object)。语法如下: ``` pattern_object = prxparse(pattern); ``` 其,`pattern` 是一个字符串,表示要编译的正则表达式模式。 2. `PRXMATCH` 函数:用于检查字符串是否与正则表达式模式匹配。语法如下: ``` match = prxmatch(pattern_object, string); ``` 其,`pattern_object` 是由 `PRXPARSE` 函数返回的正则表达式对象,`string` 是要匹配的字符串。如果匹配成功,返回非零值;否则返回 0。 3. `PRXPOSN` 函数:用于获取最后一次匹配的位置信息。语法如下: ``` position = prxposn(pattern_object, occurrence, buffer, length); ``` 其,`pattern_object` 是由 `PRXPARSE` 函数返回的正则表达式对象,`occurrence` 是指定要获取位置的匹配次数,`buffer` 是包含字符串的 SAS 变量,`length` 是 buffer 的长度。返回值是最后一次匹配的结束位置。 4. `PRXSUBSTR` 函数:用于提取匹配正则表达式模式的子字符串。语法如下: ``` substr = prxsubstr(pattern_object, occurrence, buffer); ``` 其,`pattern_object` 是由 `PRXPARSE` 函数返回的正则表达式对象,`occurrence` 是指定要提取的匹配次数,`buffer` 是包含字符串的 SAS 变量。返回值是匹配的子字符串。 5. `PRXCHANGE` 函数:用于将字符串匹配正则表达式模式的部分替换为指定的字符串。语法如下: ``` new_string = prxchange(pattern_object, occurrence, buffer, replacement); ``` 其,`pattern_object` 是由 `PRXPARSE` 函数返回的正则表达式对象,`occurrence` 是指定要替换的匹配次数,`buffer` 是包含字符串的 SAS 变量,`replacement` 是要替换为的字符串。返回值是替换后的新字符串。 这些函数提供了基本的正则表达式功能,你可以根据具体的需求使用它们来处理字符串。请注意,在使用正则表达式时,要特别注意模式的编写和匹配的规则,以确保得到正确的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值