美文网首页SAS编程
296:正则表达式(一)

296:正则表达式(一)

作者: 林芷文的日常碎碎念 | 来源:发表于2023-12-31 22:33 被阅读0次

正则表达式已经有不少人写过了,我写这个系列文章的目的主要是因为正则我用的很少很少,很多这方面的东西都不清楚。我对这些工具都是能用就行,SAS的函数和语句能解决问题,简单又方便,为什么还要用正则呢?

但是听到别人在讲正则,你却连基本的东西都不懂,傻站在一边,就像讲到统计的P值,置信区间,σ,α,也是别人讲到你却不清楚是干什么用,还是傻站在一边,你可以不用,但是不能不懂。所以不是会写个SDTM、ADaM、TFL就是了,要学的东西太多了。
正则表达式:regular expressions (RegEx)
RegEx由字母、数字、元字符和特殊字符组成,这些字符构成模式,为了使SAS正确地解释这些模式,所有RegEx值都必须用 "分隔符对" 封装起来,比如下面这样(省略号就是pattern)
/......../
假设我们想搜索字符“street”,那么pattern就是/street/
元字符(Metacharacter):元字符是诸如SAS之类的编程语言用于的一个字符或一组字符,比如 \s在正则表达式里面代表空白字符。

特殊字符:在正则表达式里面,有以下特殊字符:

() 这对圆括号代表创建模式字符和元字符的逻辑组,尤其是你在创建复杂的pattern的时候,运用这个括号是很重要的。
| 这个竖线代表 or 的意思
\ 这个右斜杠代表它被用作其他元字符(Metacharacter)的组成部分,比如上面的\s,这是第一个作用;另一个作用就是运用这个之后,比如前面的两个特殊字符,就能告诉SAS它就是普通的字符,而不是什么特殊字符,你给我把这普通的字符输出就好了。

了解这些基本的东西,我们直接看实例吧,看看SAS中的函数对应正则表达式的哪些东西:
①:prxmatch:匹配字符(pattern)并返回第一个匹配到的pattern所在的位置,类似于index函数和find函数。
语法:PRXMATCH(RegEx_ID or RegEx, Source_Text)
需要注意第一个参数,需要用引号括起来,并用/..../存放你的表达式(省略号就是表达式)。


image.png image.png

注意到prxmatch('/(大|吃|寒|冒)/', var2),即使我先把‘吃’放在前面,它匹配到的也是‘冒’的位置,所以跟放的顺序无关,同时注意我用了(),前面讲了()的作用,就是添加逻辑组,换句话说就是匹配括号内的表达式并将其分组,将括号里的字符当作一个单独的单元。但是在上面的例子中发现不加也是能同样匹配出来的。
关于这个括号的用法,我再举一个例子:

image.png

还有\的作用,我这也举一个例子


image.png image.png

大家可以先尝试一下把index换成prxmatch去匹配字符,可以看到如果你用or去匹配的话,要写好几个index,所以用prxmatch一大好处就是看起来简洁一些。

一步一步来,今天就先介绍prxmatch,后续还有好几个函数。

相关文章

  • 【296】

    296

  • 296.消费主力即将是他们

    知六·洋豆豆向您荐书 第296 天 【洋豆豆荐书】第296天~消费主力即将是他们 296. 《圈层效应》[美]托马...

  • 河南省近年来美术类文化分数线

    美术类统考院文化校本A线306,校考院校文化本A线296,统考院校文化本B线296,校考院校文化本B线296。专科...

  • 296

    九个月26 阴历的话就满满十个月了。 好累,体力不支。 求人拯救!

  • 296

    2018.11.5,周一,阴转小阵雨! 今天是宝贝晨文的生日,早上给她煮的面条加鸡蛋,祝愿她平安顺利,永远简单快乐...

  • 296

    姓名曹彩萍~公司丹阳明煌工具。 日精进打卡第 296天 《六项精进》1 《大学》...

  • 296

    姓名曹彩萍~公司丹阳明煌工具。 日精进打卡第 296天 《六项精进》0 《大学》...

  • 296

    2018年7月17日 星期二 天气 晴 婉婷咳嗽的有些厉害,可游泳明天就要考试了,真是纠结,还是让她...

  • 296

  • 296

    Title:教育的目的 厚实多褶皱的大脑皮层是地地道道人类的特有,功能只有一个—思考。可惜,包括我在内的不少人经过...

网友评论

    本文标题:296:正则表达式(一)

    本文链接:https://www.haomeiwen.com/subject/uebyndtx.html