专栏首页老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");

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一个关于SAS转置的问题

    PROC TRANSPOSE是SAS中用来对数据集进行行列转置的过程步,有时候可能需要经过多次PROC TRANSPOSE才能得到我们想的结果。今天无意中看到一...

    专业余码农
  • SAS求子集

    前几天在微信群里看到一个问题:求一个数组的子集。SAS中实现排列的方法有多种,最易懂的方法应该是PROC SUMMARY以及CALL ALLCOMB,两种方法的...

    专业余码农
  • SAS创建单级书签的PDF文件

    在用ODS PDF生成PDF文件时,为了美观有时只要一层书签(如上图),下图为多层级书签。

    专业余码农
  • 【模型解读】说说移动端基准模型MobileNets

    Google开发的MobileNets【1】是用于嵌入式平台计算机视觉应用的基准模型。MobileNets是流线型的架构,它使用depthwise sparab...

    用户1508658
  • 思路|如何挖信息泄密漏洞

    我昨天挖到了一个腾讯的和一个上海交通大学的信息泄密漏洞,然后我看了看我提交的漏洞列表,大部分都是信息泄密漏洞,所以今天给大家分享一下如何挖信息泄密漏洞。 先看...

    陈殷
  • 豪取BAT!超详细暑期实习算法面经(非科班无论文)

    本人基本情况:211本硕,本科电子信息工程,硕士通信与信息系统,典型的非科班,无论文,两段实习经历(均为算法岗,非大厂,一段CV,一段NLP)。

    NewBeeNLP
  • 大数据测试学习笔记之测试工具集

    这是2018年度业余主要学习和研究的方向的笔记:大数据测试 整个学习笔记以短文为主,记录一些关键信息和思考 预计每周一篇短文进行记录,可能是理论、概念、技术、工...

    苦叶子
  • 【专业技术】Chromium浏览器的Content模块设计意图

    Content 模块概述 “content”模块放在src \content里面,并使用多进程浏览器沙盒模块来呈现页面所需的核心代码。它包括所有的网络平台功能(...

    程序员互动联盟
  • 禁忌搜索算法求解带时间窗的车辆路径规划问题详解(附Java代码)

    所以赶紧趁考试周来临前,码出了这篇禁忌搜索算法解决VRPTW的文章,临时抱佛脚,假装自己今年学了一点东西。

    用户1621951
  • 一文读懂StarlingX

    说到StarlingX,要先说两个公司,(Intel)英特尔和WindRiver(风河)。英特尔我们都知道是美国一家主要以研制CPU处理器的公司,是全球最大的个...

    边缘计算

扫码关注云+社区

领取腾讯云代金券