楼主: Undernatural
1948 6

[实际应用] sas正则表达式 # 中文字符串 # 焦急 [推广有奖]

  • 1关注
  • 0粉丝

本科生

76%

还不是VIP/贵宾

-

威望
0
论坛币
256 个
通用积分
2.8669
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
422 点
帖子
36
精华
0
在线时间
162 小时
注册时间
2019-7-10
最后登录
2024-7-23

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
使用函数或者正则表达式处理中文字符,将以下信息拆分为发放日期、业务类型,担保方式、期限、账户状态等。

1624342973(1).jpg





使用find与substr函数不能对中文字符很好的截取;本人正则用得不好,没法拆分成想要的内容,希望各位大神帮忙解答一下,在线着急!!!
附件见excel。




二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:正则表达式 字符串 表达式 SUBSTR EXCEL

test.xlsx

13.66 KB

沙发
whymath 发表于 2021-6-22 20:51:00 |只看作者 |坛友微信交流群
初学者也可以写的哦
  1. data test;
  2.   format data_val $1024.;
  3.   input n        data_val$;
  4.   cards;
  5. 1        1.2017年01月20日金融租赁公司“LF”发放的121,618元(人民币)个人汽车贷款,业务号X,抵押担保,036期,按月归还,2020年01月15日到期。截至2019年11月19日,
  6. 2        84.2013年11月22日商业银行“MG”发放的20,000元(人民币)农户贷款,业务号X,保证,2期,按季归还。截至2013年12月17日,账户状态为“结清”。
  7. 3        31.2011年12月23日商业银行“MG”发放的5,000元(人民币)农户贷款,业务号X,保证,一次性归还。截至2011年12月25日,账户状态为“结清”。
  8. ;
  9. run;

  10. data get;
  11.   set test;

  12.   pat1 = prxparse('/\d+年\d+月\d+日/');    *发放日期;
  13.   pat2 = prxparse('/\d+(,\d+)?元/');         *贷款金额;
  14.   pat3 = prxparse('/)(.*?),/');              *业务类型;
  15.   pat4 = prxparse('/,([^,]*(担保|保证)),/');  *担保方式;
  16.   pat5_1 = prxparse('/截至(\d+年\d+月\d+日)/');    *期限-记法1;
  17.   pat5_2 = prxparse('/(\d+年\d+月\d+日)到期/');      *期限-记法2;
  18.   pat6 = prxparse('/账户状态为“(.*?)”/');              *账户状态;

  19.   if prxmatch(pat1,data_val) then val1 = prxposn(pat1,0,data_val);
  20.   if prxmatch(pat2,data_val) then val2 = prxposn(pat2,0,data_val);
  21.   if prxmatch(pat3,data_val) then val3 = prxposn(pat3,1,data_val);
  22.   if prxmatch(pat4,data_val) then val4 = prxposn(pat4,1,data_val);
  23.   if prxmatch(pat5_1,data_val) then val5 = prxposn(pat5_1,1,data_val);
  24.   if prxmatch(pat5_2,data_val) then val5 = prxposn(pat5_2,1,data_val);
  25.   if prxmatch(pat6,data_val) then val6 = prxposn(pat6,1,data_val);

  26.   put '发放日期 = ' val1 /
  27.    '贷款金额 = ' val2 /
  28.    '业务类型 = ' val3 /
  29.    '担保方式 = ' val4 /
  30.    '期限     = ' val5 /
  31.    '账户状态 = ' val6 /;
  32. run;
复制代码


结果为
  1. 发放日期 = 2017年01月20日
  2. 贷款金额 = 121,618元
  3. 业务类型 = 个人汽车贷款
  4. 担保方式 = 抵押担保
  5. 期限     = 2020年01月15日
  6. 账户状态 =

  7. 发放日期 = 2013年11月22日
  8. 贷款金额 = 20,000元
  9. 业务类型 = 农户贷款
  10. 担保方式 = 保证
  11. 期限     = 2013年12月17日
  12. 账户状态 = 结清

  13. 发放日期 = 2011年12月23日
  14. 贷款金额 = 5,000元
  15. 业务类型 = 农户贷款
  16. 担保方式 = 保证
  17. 期限     = 2011年12月25日
  18. 账户状态 = 结清
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Undernatural + 5 + 5 + 5 精彩帖子

总评分: 学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

使用道具

藤椅
Undernatural 发表于 2021-6-23 10:40:58 |只看作者 |坛友微信交流群
帮助太大了,非常感谢,我昨天用find和substr虽然也提取出来了,但是很繁琐,还是正则比较清晰。但是我还有两个疑问:
1.为什么组合(不含保证)担保提取不到呢?2.期限(360期)我照着样子写了,也没提取出来,我没怎么写过正则,这块比较菜,麻烦再指点一下。。。。YYDS
  1. 2.2018年12月06日商业银行“LH”发放的860,000元(人民币)个人住房贷款,业务号X,组合(不含保证)担保,360期,按月归还,2048年12月06日到期。截至2019年11月21日,
复制代码

使用道具

板凳
Undernatural 发表于 2021-6-23 10:46:49 |只看作者 |坛友微信交流群
whymath 发表于 2021-6-22 20:51
初学者也可以写的哦
特别感谢,十分有用,但是我还有两个疑问:1.为什么组合(不含保证)担保提取不到呢?2.期数(360期)我照着样子写没提取成功,正则没用过比较菜,麻烦再指导一下,再次感谢!!!!
....YYDS...
  1. 2.2018年12月06日商业银行“LH”发放的860,000元(人民币)个人住房贷款,业务号X,组合(不含保证)担保,360期,按月归还,2048年12月06日到期。截至2019年11月21日,
复制代码

使用道具

报纸
Undernatural 发表于 2021-6-23 11:16:53 |只看作者 |坛友微信交流群
Undernatural 发表于 2021-6-23 10:46
特别感谢,十分有用,但是我还有两个疑问:1.为什么组合(不含保证)担保提取不到呢?2.期数(360期)我照 ...
期数提取出来了,但是组合(不含保证)担保还是没取出来

使用道具

地板
whymath 发表于 2021-6-28 21:59:18 |只看作者 |坛友微信交流群
Undernatural 发表于 2021-6-23 11:16
期数提取出来了,但是组合(不含保证)担保还是没取出来
一步到位有时是很困难的。不妨作为特例,额外写程序处理~

使用道具

7
Undernatural 发表于 2021-7-7 08:53:36 |只看作者 |坛友微信交流群
whymath 发表于 2021-6-28 21:59
一步到位有时是很困难的。不妨作为特例,额外写程序处理~
感谢指教!

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-10-6 22:53