当前位置:首页 > 娱乐

移形换影 5. call PRXCHANGE | 移形换影

这是【SAS正则表达式】系列的第五集。请在后台回复[SASRE]获取整个系列

改变形状和改变阴影| 5。呼叫PRXCHANGE()

0.回顾前一集

1.新问题

2.会见PRXCHANGE()

3.问题解决

0.回顾前一集:

如前所述,小王刚刚毕业,来到数码国际零售公司做数据分析师,帮产品部的妹子解决一个问题。下面是产品列表,有些行是产品名称,有些行是产品编号。现在只想保留数字(也就是红色字体部分),把数字分别放在括号里(括号里的数字代表产品类别),提取带有PD的logos(代表过期产品)。

(01)1872-8756

P1美发店

图书B13

(05)9212-0098

PD(05)9206-4571

舒硕手机

(12) 6753-5513

这里没有

PD(12)6434-4532

P&。洗涤

PC Pro4321S:(09) 1352-3154

小王的SAS代码如下:

数据生产;

if _ N _ = 1 then pattern = PRXPARSE("/(P?d?)((dd))?d { 4 }-d { 4 }/);

retainpattern

inputname $char40。;

lengthid $ 20

callPRXSUBSTR(模式、名称、开始、长度);

*以下PRXPOSN必须与此PRXMATCH一起使用;

match =PRXMATCH(模式,名称);

iflength GT 0thendo

*获取产品的完整ID;

id=substr(名称、开始、长度);

id=compress(id," ");

*获取ID中的产品类型(即括号中的数字);

callPRXPOSN(pattern,2,start_2,length _ 2);

category=substr(name,start_2,length _ 2);

*获取ID中产品的过期信息;

callPRXPOSN(pattern,1,start_1,length _ 1);

iflength _ 1 gt 0 then PD = substr(name,start_1,length _ 1);

输出;

结束;

keepid类别PD;

数据线;

(01)1872-8756

P1美发店

图书B13

(05)9212-0098

PD(05)9206-4571

Shushuophone

(12)6753-5513

这里没有

PD(12)6434-4532

P&。DWashing

PC Pro4321S:(09) 1352-3154

procprintnoobs

标题‘生产标识’;

跑步;

获得最终结果:

单击此处查看之前的剧集:

1.新问题

哎呀!

所有数字的后八位都是反的!

XXXX-YYYY,应该改为YYYY-XXXX

换句话说,你看到产品清单上的号码:(01)1872-8756

其实应该是:(01)8756-1872

怎么办?

放心,小王是用PRXCHANGES()函数换位置的。

2.第一次遇到PRXCHANGES()

该功能有两个功能:

1)任意字符的替换;

2)可以帮助我们自由重组一个段落,这是我们这一集要解决的问题。

前提是必须配合PRXPARSE使用。

1)更换

pattern = PRXPARSE(" s/Shu Shuo/帅帅/")

PRXCHANGE(模式、时间、字符串、新字符串、结果长度、截断值、更改次数)

看到很多参数不要觉得复杂。我用灰色标注的时候一般不用。

首先,PRXPARSE()语句与前一个有些不同,所以要注意用红色标注的部分。

正则表达式的开头有一个额外的s字母,用来指定替换或重排。在两个斜杠“//”之间,还有一个斜杠/(用红色标注),表示斜杠的左边是被替换的部分,右边是被替换的字符。在这个例子中,“舒硕”应该被替换为“帅帅”。

PACHANGE()的参数用法如下:

Pattern是前面PRXPARSE指定的正则表达式。

Times用于指定要替换的次数。如果设置为-1,则表示只要字符中有匹配,就会被替换。

String是要替换的字符,new_string是替换后的新字符串。

Result_length返回新字符的长度

truction-value返回0或1,指示新字符是否已被裁剪。如果新字符太长,它将被裁剪,即1。

Numer of changes返回匹配项替换了多少原始字符。

当然,不能生成新字符new_string,只能替换和修改原来的字符,例如:

pattern = PRXPARSE(" s/Shu Shuo/帅帅/")

PRXCHANGES(模式,-1,字符串)

2)重排

这很有趣。前面说过,“打包”就是把正则表达式的一部分封装起来,“打包”这段。在这里,我们可以重新排列部分:

pattern = PRXPARSE(" s/(Shu)(Shuo)/$ 2 $ 1/")

PRXCHANGE(模式、时间、字符串、新字符串、结果长度、截断值、更改次数)

变化主要在PRXPARSE,其中(shu)和(shu)分别用和包装和表示,其次是,这意味着它们以shuoshu的方式排列。我们来看看SAS。

datatemp

string= "我爱舒硕";

pattern = PRXPARSE(" s/(Shu)(Shuo)/$ 2 $ 1/";

callPRXCHANGE(模式,-1,字符串);

fileprint

put string =;

跑步;

输出结果是:

硕硕被重新安排到舒舒了!

3.问题解决

让我们重新排列之前分类的产品标识列表:

自我

(01)1872-8756

(05)9212-0098

PD(05)9206-4571

(12)6753-5513

PD(12)6434-4532

(09)1352-3154

将-前后四位数字,即1872-8756改为8756-1872等。SAS代码如下:

数据生产;

if _ N _ = 1 then pattern = PRXPARSE(" s/(P?d?(dd)?)(d { 4 })(-)(d { 4 })/$ 1 $ 4 $ 3 $ 2/";

retainpattern

inputid $char40。;

lengthnew_id 。;

callPRXCHANGE(pattern,-1,id,new_id,r_length,trunc,n _ of _ changes);

数据线;

(01)1872-8756

(05)9212-0098

PD(05)9206-4571

(12)6753-5513

PD(12)6434-4532

(09)1352-3154

procprintnoobs

标题‘生产标识’;

varid new _ id

跑步;

结果是:

让我们再次尝试将它集成到原始代码中。以下是我自己的代码,供您参考:

数据生产;

if _ N _ = 1then

pattern=PRXPARSE("s/(P?d?(dd)?)(d { 4 })(-)(d { 4 })/$ 1 $ 4 $ 3 $ 2/";

retainpattern

if _ N _ = 1 then pattern 2 = PRXPARSE("/P?d?(dd)?d { 4 }-d { 4 }/);

retainpattern2

inputname $char40。;

lengthnew_name 。;

lengthid $ 20

callPRXCHANGE(模式,-1,名称,new _ name);

callprxssubstr(pattern 2,new_name,start,length);

iflength gt 0thendo

id=substr(new_name,start,length);

id=compress(id," ");

输出;

结束;

数据线;

(01)1872-8756

P1美发店

图书B13

(05)9212-0098

PD(05)9206-4571

Shushuophone

(12)6753-5513

这里没有

PD(12)6434-4532

P&。DWashing

PC Pro4321S:(09) 1352-3154

procprintnoobs

标题‘生产标识’;

varname new _ name id

跑步;

SAS的结果是:

众所周知,正则表达式是文本分析的利器。有关文本分析和文本搜索,请参见:

做一个小游戏,你觉得这个系列的SAS正则表达式怎么样?

1.不好——跳到a。

2.好-跳到2.1

2.1奖励?

奖励——跳到b。

没有奖励-跳到2.2

2.2点击文章结尾的广告?

点击-跳到c

不要点击-跳转到a。

你有什么建议?可以在文末评论区留言,帮我做的越来越好!

b谢谢您,先生~!请在文章最后给我一个奖励。我会再接再厉!

c谢谢小哥哥,谢谢美女~!广告主会给我奖励的!

相关建议:

[SAS基础]

回复[sasbase]查看

IML公司(矩阵交互模块)

回复[sasiml]查看

1.关于数据分析的问题或者求助,直接在微信后台留言。

2.转载、投稿、发布免费招聘与合作,请添加个人微信AnselT,或邮箱:jiayounet@163.com。

3.查看完所有文章请在后台回复[M]

舒硕工作室

数据分析师主页|金融生物零售互联网

微信ID: shushujun

龙按下二维码去关注数字工作室

1.《移形换影 5. call PRXCHANGE | 移形换影》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《移形换影 5. call PRXCHANGE | 移形换影》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/yule/878882.html

上一篇

新生三胞胎感染新冠 怎么染上的

下一篇

多地调整公租房政策 具体有哪些调整什么情况

铜陵模式 铜陵推出社区改革“铜陵模式” 为居民自治开路搭桥

《法制日报》2012年12月31日头版报道“虽然孩子不在身边,但是每天都有人来免费帮我打扫卫生洗衣服。这么好的一天,以前是无法想象的。”《法制日报》记者在安徽铜陵潼关山区艾国东村见到独居的80岁老人李建华时,她的家人刚刚做了彻底的清扫。在潼关山区,70岁以上独居老人只要属于低收入或低收入家庭,每天都可以享受家...

点卡或月卡计费的手游 点卡游戏变月卡游戏?逆水寒资费封顶制或将开创网游计费新模式?

  • 点卡或月卡计费的手游 点卡游戏变月卡游戏?逆水寒资费封顶制或将开创网游计费新模式?
  • 点卡或月卡计费的手游 点卡游戏变月卡游戏?逆水寒资费封顶制或将开创网游计费新模式?
  • 点卡或月卡计费的手游 点卡游戏变月卡游戏?逆水寒资费封顶制或将开创网游计费新模式?

游戏模式怎么设置 iPhone手机居然有游戏模式?很多人都不知道如何开启!

  • 游戏模式怎么设置 iPhone手机居然有游戏模式?很多人都不知道如何开启!
  • 游戏模式怎么设置 iPhone手机居然有游戏模式?很多人都不知道如何开启!
  • 游戏模式怎么设置 iPhone手机居然有游戏模式?很多人都不知道如何开启!

现代化农业 现代化新型农业的4大种植模式,13种栽培方式,你与哪一款更配?

  • 现代化农业 现代化新型农业的4大种植模式,13种栽培方式,你与哪一款更配?
  • 现代化农业 现代化新型农业的4大种植模式,13种栽培方式,你与哪一款更配?
  • 现代化农业 现代化新型农业的4大种植模式,13种栽培方式,你与哪一款更配?

嘉德置地 嘉德商用拟赴港第二上市 嘉德置地资本模式探析

作为一个擅长金融运营的亚洲地产大亨,嘉德置地集团显然不会放过任何一个利用资本市场的机会。3月28日,经营商业地产的嘉德地产旗舰成员嘉德商业实业有限公司宣布,已提交在香港主板市场二次上市申请,以扩大融资基础,增强资金管理的灵活性。第二次无融资需求上市将由中国国际金融有限公司和摩根大通共同发起。据外媒报道,嘉德商...

微信正式支持深色模式 微信深色模式怎么开启

今天中午,iOS版微信得到了推送更新,这次更新最大的升级就是增加了对苹果黑暗模式的支持。微信iOS版本的更新包大小为257.6MB,更新版本为7.0.12。根据最新更新描述,微信iOS可以按照系统设置,切换到黑暗模式。此外,此更新还优化了语音消息的发送体验,使其更便于向上滑动和翻转文本。据了解,苹果此前发布通...

微信正式支持深色模式 有望在下一个新版本中上线

微信正式支持深色模式 有望在下一个新版本中上线

最近微信发布了IOs 7 . 0 . 12版本的更新,正式支持黑暗模式。它的更新说明说:它可以按照系统设置,切换到黑暗模式。3月初,微信表示,为了优化用户体验,微信与苹果达成合作,共同探索微信在iOS系统中的黑暗模式体验。目前该功能已经开发完成,预计在下一个新版本中推出。...

沟通案例 管理沟通案例-小王的烦恼

管理沟通案例——小王的烦恼 深圳捷力讯产业 将供应商与您领先的技术成果/品牌工业产品整合在一起,共享世界  案例摘要 沟通,尤其是在工作中与领导和同事的沟通,非常重要。有效的沟通可以事半功倍,沟通不畅会大大降低工作效率。本文通过小王跳槽新公司,因沟通不畅离职的案例,阐述了沟通的重要性。 辞职...