导读

在上篇推文《正则表达式匹配和提取函数》中简单介绍了正则表达式的匹配和提取函数,并用一些简单的例子向大家说明如何利用正则表达式匹配和提取文本。今天我们为大家简单介绍一下正则表达式的替换函数,并举例说明正则表达式替换函数的应用。

正则表达式之替换函数

正则表达式中的替换函数有两种类型:ustrregexrf(s1,re,s2[,noc])ustrregexra(s1,re,s2[,noc])

其中r代表replace,即替换;f代表first,a代表all。两个函数分别代表将正则表达式re在字符串s1中匹配到的所有子字符串中的第一个和全部替换为字符串s2。在默认情况下,匹配是区分大小写的,但是如果定义noc为一个不为零的数,则匹配时不区分大小写。


以下是几个简单的例子:

dis ustrregexrf("ABab","ab","X") //表示将ab替换成x

dis ustrregexrf("ABab","Ab","X") //没有匹配到Ab,因此没有发生替换

 dis ustrregexrf("ABab","Ab","X",0) //在区分大小写的情况下,没有匹配到Ab,因此不发生替换

dis ustrregexrf("ABab","Ab","X",1) //在不区分大小写的情况下,Ab既可以匹配到AB也可以匹配到ab,f表示将匹配到的第一个子字符串替换,即替换了A

dis ustrregexra("ABab","Ab","X",1) //在不区分大小写的情况下,Ab既可以匹配到AB也可以匹配到ab,a表示将匹配到的所有子字符串替换,即替换成了XX

对于复杂一些的问题,处理过程也要复杂一些。比如在处理从网上找到的英文名字的时候,我们可能会发现多个英文名字连接在一起,这时我们就可以尝试用正则表达式的替换函数解决问题,接下来为大家举例说明。

一、用input命令读入观测值

clearinput str40 partners"Jeb SpencerSteven Hamerslag""Jules MaltzSteve Harrick""Raymond YangDavid LamJason LinKelly Liu""Fred WilsonBrad Burnham"endlist

如第一行观测值“Jeb SpencerSteven Hamerslag”,事实上包括了两个英文姓名“Jeb Spencer”和“Steven Hamerslag”。我们需要将这行观测值拆分为两个姓名。

二、使用正则表达式的替换函数进行姓名拆分

通过观察,我们发现连接在一起的英文姓名特征为小写字母加大写字母。例如在第一行观测值中,第一个姓名最后一个字符为小写字母“r”,第二个姓名第一个字符为大写字母“S”,那么“rS”就是两个姓名连在一起的特征。所以我们尝试将相连的小写字母在前,大写字母在后的内容分开并在中间加上分号。

replace partners = ustrregexra(partners, "([a-z])([A-Z])", "$1;$2")list

其中[a-z]表示所有小写字母,[A-Z]表示所有大写字母。以第一行观测值为例,”([a-z])([A-Z])“的匹配结果为”rS“,”$1“表示第一个子表达式匹配到的内容,即”r“,”$2“表示第二个子表达式匹配到的内容,即”S“;那么”$1;$2“则表示”r;S“。因此就实现了在两个姓名之间加入分隔符”;“。如上图所示。

三、整理

名字完成拆分之后,需要用split命令对变量进行分隔。

split partners,p(;)

如上图所示,partners1-partners4即为分隔后的结果,接下来我们用stack命令将这四个变量堆到一个变量下,并删除缺失值。

stack partners1 - partners4, into(partners) cleardrop if partners == ""drop _stack

如上图所示,我们完成了对这些英文姓名的拆分。

完整命令如下:

clearinput str40 partners"Jeb SpencerSteven Hamerslag""Jules MaltzSteve Harrick""Raymond YangDavid LamJason LinKelly Liu""Fred WilsonBrad Burnham"endreplace partners = ustrregexra(partners, "([a-z])([A-Z])", "$1;$2")split partners,p(;)stack partners1 - partners4, into(partners) cleardrop if partners == ""drop _stack

以上就是本篇文章对正则表达式替换函数的简单介绍啦!上篇推文和本篇推文已经介绍了正则表达式的匹配、提取和替换函数。正则表达式作为一种强大、便捷、高效的文本处理工具,大家可以多多进行了解。

ora00936缺失表达式怎么解决_正则表达式替换函数相关推荐

  1. ora00936缺失表达式怎么解决_初学者学习AE经常会遇到问题及解决方法,快进来看看吧!~~...

    关于软件常见问题 请一定要收藏 对初学者的你绝对有用 首先解决的第一个问题是: 软件安装失败提示及解决方案 说起原因 安装失败是由AE的某些文件没有删除干净 (绿化版本极易造成,不建议安装) 解决方案 ...

  2. php正则表达式替换,PHP正则表达式替换函数preg_replace

    preg_replace正则表达式替换函数对于我来说,现在非常喜欢它.不仅能准确.快速的处理字符串,还能让我从新审视正则表达式的重要性.正则表达式语言对于我来说,就像人类听不懂鸟语一样,想懂它却那么难 ...

  3. lamda表达式修改数据_正则表达式学习教程

    正则表达式(regular expression)是我在学习数据分析最开始的过程中最常出现的一个名词之一.直到最近我要用正则表达式搜索文本时,发现自己根本看不懂一连串的符号.于是停下来先解决这个&qu ...

  4. java json 正则_正则表达式替换json字符串

    是否有一个正则表达式我可以用来查找JSON字符串中的所有数字并用双引号替换它们? 例如,在下面的JSON字符串中,我想用双引号替换Id和Phone值 . String jsonString = &qu ...

  5. java正则表达式替换指定字符串_笔记_正则表达式替换字符串中特定范围内的字符。...

    功能:从字符串中找到所有<>之间的单引号,转换成双引号. 如: 转换成: 代码: package test_java; import java.util.regex.Matcher; im ...

  6. SQL Server 2005,2008 正则表达式 替换函数应用详解

    CREATE function dbo.regexReplace ( @source ntext, --原字符串 @regexp varchar(1000), --正则表达式 @replace var ...

  7. linux c中字符替换函数,Linux C 支持正则表达式的字符串替换函数

    [root@localhost src]# cat a.c /** * Linux C 支持正则表达式的字符串替换函数 * * Author: cnscn@163.com * Homepage: ww ...

  8. java正则表达式替换特殊字符_使用正则表达式替换报表名称中的特殊字符(推荐)...

    正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表通常被用来检索.替换那些符合某个模式(规则)的文 ...

  9. 表达式必须是可修改的左值怎么解决_如何解决代码腐败的味道

    一. Duplicated Code(重复代码) 如果你在一个以上的地点看到相同的程序结构,设法将他们合而为一,程序会变得更好. 同一个类的两个函数含有相同的表达式,采用Extract Method( ...

最新文章

  1. [UE4蓝图教程]蓝图入门之变量使用
  2. 港中文提出全新点云上采样方法,破解自动驾驶感知难题
  3. 【C 语言】二级指针案例 ( 字符串切割 | 返回 自定义二级指针 作为结果 | 每个 一级指针 指向不同大小内存 | 精准分配每个 一级指针 指向的内存大小 )
  4. Java 20年:历史与未来
  5. C/Cpp / 类中静态成员变量和普通成员变量的区别
  6. flush方法和close方法的区别
  7. Java新特性(二)
  8. python 定义变量_python-003-变量
  9. Less的@import指令
  10. jdbc 自增id 原理_如何实现 Oracle 的自增序列,两步轻松搞定
  11. BinaryOperator示例
  12. 读丁磊内部邮件有感“丁磊点评:微信5分 陌陌4分 易信0分 来往负分”
  13. 【解题报告】2021CCPC东北四省赛
  14. Unable to find instance for XXXX
  15. simulink实现他励直流电动机串电阻调速仿真
  16. 第188天:extend拷贝创建对象的原理
  17. 人生何处不相逢谐音歌词
  18. unittest框架用法
  19. 十年前范雅各布森关于bufferbloat的讨论
  20. 极智AI | 英伟达 Jetson 系列边缘盒子性能测评

热门文章

  1. cve-bin-tool 证书错误的解决方法
  2. Java synchronized 实现生产者-消费者模型
  3. Parallels高危漏洞的奇葩修复指南
  4. leetcode 小青蛙跳梯子
  5. Windows系统调用学习笔记(四)—— 系统服务表SSDT
  6. 004 两种方法找寻路call
  7. Intent Flag介绍 intent.addFlags()
  8. 21、 TRUNCATE:清空表记录
  9. JMeter初探五-配置元件与参数化
  10. Python之二叉树的遍历