- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
sas正则式prxparse
sas正则式之prxparen今天还是要继续正则式的内容,这周的内容是prxparen函数,这个函数我个人觉得特别有用,是因为他和“|”结合使用可以同时容纳很多种情况的字符串。prxparse这个函数没有什么参数,就是填入prxparse正则式的字符返回对应的是praparse的哪一部分。我现在说你肯定很懵逼,来,我们举个栗子!re=prxparse(/(one)|(two)|(three)/)position=prxmatch(re,string)函数变量返回值备注prxparen(re)three two one3three首先发现,返回3prxparen(re)only one here1one首先发现,返回1prxparen(re)two one three2two首先发现,返回2就是这么说prxparse(/(one)|(two)|(three)/)搜索字符函数中/(one)|(two)|(three)/ 用“|”分开了三个即将要搜索的字符,即‘’one”为第一个搜索字符,一旦在字符中发现“one”了就返回1,假设第一个发现的字符串是“three”就是返回3,所以返回刚才的例子就很容易理解了。现在用一个小例子再介绍这个函数dataparen;if _n_=1then pattern=prxparse(/(\d )|(\d\d )|(\d\d\d )/);retain pattern;input string $char30.;position=prxmatch(pattern,string);if position gt0thenwhich_paren=prxparen(pattern);datalines;one single digit 8 heretwo 888 7712345 1234 123 12 1;run;结果:如图所示,position是函数prxmatch的返回结果,即字符的位置,which_paren是prxparen的返回结果,即对应的是字符搜索的哪一部分。if position gt0thenwhich_paren=prxparen(pattern);?这里的if是为了确认是prxmatch搜索到位置的时候才判断字符是属于pattern的哪一部分。现在用一个实际数据处理中的例子再深化这个函数。这是一份领导给我的数据,可以看到数据上中文字符之后还有一些乱七八糟的英文啊符号啊数字啊,当时领导的需求是,把这份数据清洗出来变成只用字符的变量以及不要用类似“黄山分行”这种字眼的存在。所以当下就写了以下这段代码解决的这个需求。来,上代码!datass;setdd;if _n_=1thenret=prxparse(/(\D?\银行)|(\D?\金融)|(\D?\贷款)|(\D?\融资)|(\D?\保险)|(\D?\担保)|(\D?\信用[社合联])/);retain ret;position=prxmatch(ret,QUERY_OPERATOR);if position gt0thenwhich_posit=prxparen(ret);elsewhich_posit=0;ifwhich_positgt0thendo;?? callprxsubstr(ret,QUERY_OPERATOR,start,length);?? if start gt0andwhich_posit=1thendo;?? dd=substr(QUERY_OPERATOR,1,start)||银行;?? end;?? if start gt0andwhich_posit=2thendo;?? dd=substr(QUERY_OPERATOR,1,start)||金融公司;?? end;?? if start gt0andwhich_posit=3thendo;?? dd=substr(QUERY_OPERATOR,1,start)||贷款公司;?? end;?? if start gt0andwhich_posit=4thendo;?? dd=substr(QUERY_OPERATOR,1,start)||融资有限公司;?? end;?? if start gt0andwhich_posit=5thendo;?? dd=substr(QUERY_OPERATOR,1,start)||保险有限公司;?? end;?? if start gt0andwhich_posit=6thendo;?? dd=substr(QUERY_OPERATOR,1,start)||担保公司;?? end;?? if start gt0andwhich_posit=7thendo;?? dd=substr(QUERY_OPERATOR,1,start)||农
文档评论(0)