前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >正则表达式模式修饰词

正则表达式模式修饰词

作者头像
专业余码农
发布2020-07-16 09:48:58
1K0
发布2020-07-16 09:48:58
举报
文章被收录于专栏:老Z的博客老Z的博客老Z的博客

在介绍修饰符之前,首先介绍一下在Perl中的两个基本函数:

match( string, pattern ); subst( string, pattern,

即匹配和替换,缩写为m//s///(或s###),对应到SAS中的函数就是PRXMATCHPRXCHANGE,即m/PATTERN/s/PATTERN/REPLACEMENT/(或s#PATTERN#REPLACEMENT#)。注意其中的字母m(表示开始匹配的操作)可以省略而字母s不能省略。模式修饰词也称为选项,是指放在m//s///最后一个分隔符后的一个字母,例如字母/o/i/s/m/g。由于SAS并没有包含整个Perl语言,所以SAS中只支持部分的模式修饰词,下面简单介绍一下两个常用的修饰符:

  1. /o,只编译表达式一次,这样可提高效率。如果我们将表达式写在函数PRXPARSE中,如下所示: re=prxparse('/(.+?)\s+(\d+)/'); 这种写法SAS只编译表达式一次,等同于下面这种写法: pattern='/(.+?)\s+(\d+)/o'; re=prxparse(pattern);
  2. /i,忽略字母大小写,如下面的表达式的第一个组,可以成功匹配字符串PERL也可以匹配字符串Perl。 pattern='/(Perl)\s+(\d+)/io'; re=prxparse(pattern);

上面有提到另一种替换的操作符:s###s#PATTERN#REPLACEMENT#),下面介绍一下这个操作符的用处。我们知道在表达式中如果要匹配一些元字符的时候,如/, (, .,则需要在元字符前面加一个转义符\来屏蔽元字符的特殊含义以达到匹配元字符本身的目的。而当PATTERNREPLACEMENT中含有多个元字符,则需要写多个转义符\,这样就会有点麻烦。所以这种情况就可用s###s#PATTERN#REPLACEMENT#),因为在这种操作符中可以不用使用转义符。如下例:

path=prxchange("s/.*\/(.*)\/\w*\.jpg/\/home\/cn\/picture\/$1\/Cheshire_cat.jpg/", 1, "http://www.xianhuazeng.com/cnuploads/2015/Cheshire_cat.jpg");
path=prxchange("s#.*/(.*)/\w*.jpg#/home/cn/picture/$1/Cheshire_cat.jpg#", 1, "http://www.xianhuazeng.com/cnuploads/2015/Cheshire_cat.jpg");
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-12-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档