楼主: 旧城少世
13134 17

[问答] 如何在sas中正确导入带分隔符的txt数据 [推广有奖]

11
旧城少世 学生认证  发表于 2015-11-16 14:43:22 |只看作者 |坛友微信交流群
木叶知秋 发表于 2015-11-16 12:28
1、因为|在正则表达式有特殊含义,因此用\|表示|
2、因为刚刚那个问题增加了()?,多了一个匹配组,这 ...
嗯,豁然开朗,多谢啦~~~

使用道具

12
teqel 发表于 2015-11-16 22:37:58 |只看作者 |坛友微信交流群
搞得我也开始喜欢正则表达式了:)

使用道具

13
旧城少世 学生认证  发表于 2015-11-17 11:30:11 |只看作者 |坛友微信交流群
teqel 发表于 2015-11-16 22:37
搞得我也开始喜欢正则表达式了:)
O(∩_∩)O哈哈~ 这个东西确实功能很不错

使用道具

14
旧城少世 学生认证  发表于 2015-11-21 22:07:12 |只看作者 |坛友微信交流群
木叶知秋 发表于 2015-11-14 18:37
最近超爱正则表达式,供参考~
data testh;
infile "C:\Users\Administrator\Desktop\test.txt" lrecl=100 truncover;
input strings $100.;
run;
data test2(keep=name phone_num  date);
length name phone_num date $20.;
if _n_=1 then pattern=prxparse('/\"(.+)\",(\"(\d{11,})\")?,\"([\w\-]+)\"/o');
retain pattern;
set testh;
rc=prxmatch(pattern,strings);
name=prxposn(pattern,1,strings);
phone_num=prxposn(pattern,3,strings);
date=prxposn(pattern,4,strings);
run;
亲,再麻烦你一下,我想用正则表达式读取这个数据,为什么第二个观测值读不进去?希望指导一下,三克油!
原数据:"steinberg","18088888888","2015-11-21"
             "henhh", "2019-11-21"

使用道具

15
木叶知秋 发表于 2015-11-22 11:17:50 |只看作者 |坛友微信交流群
旧城少世 发表于 2015-11-21 22:07
data testh;
infile "C:\Users\Administrator\Desktop\test.txt" lrecl=100 truncover;
input strings  ...
pattern=prxparse('/"(\w+)",("(\d+)",)? ?"([\d\-]+)"/o');

我也被坑了半天, "henhh", "2019-11-21"之间有个空格

使用道具

16
旧城少世 学生认证  发表于 2015-11-22 11:36:25 |只看作者 |坛友微信交流群
木叶知秋 发表于 2015-11-22 11:17
pattern=prxparse('/"(\w+)",("(\d+)",)? ?"([\d\-]+)"/o');

我也被坑了半天, "henhh", "2019-11-21" ...
pattern=prxparse('/"(\w+)",("(\d{11,})",)? ?"([\w\-]+)"/o'); 还真是。。。我刚尝试的时候,把第一个匹配组里面的\w换成\S或者.时为什么就不正确了呢?\S不就是代表任意非空白字符么?

使用道具

17
木叶知秋 发表于 2015-11-22 12:18:06 |只看作者 |坛友微信交流群
旧城少世 发表于 2015-11-22 11:36
pattern=prxparse('/"(\w+)",("(\d{11,})",)? ?"([\w\-]+)"/o'); 还真是。。。我刚尝试的时候,把第一个匹 ...
尽量用精确的匹配方式 多用\d\w这种 你用\S匹配结果不唯一 比如"steinberg","18088888888"整个串也符合你定义的这个形式
还有正则表达式后面\o这个o就表示一次编译多次执行,用了o就不用if _N_=1了

使用道具

18
旧城少世 学生认证  发表于 2015-11-22 13:36:56 |只看作者 |坛友微信交流群
木叶知秋 发表于 2015-11-22 12:18
尽量用精确的匹配方式 多用\d\w这种 你用\S匹配结果不唯一 比如"steinberg","18088888888"整个串也符合你 ...
嗯嗯 受教了 多谢哈~~~

使用道具

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

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

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

GMT+8, 2024-4-26 21:38