请选择 进入手机版 | 继续访问电脑版
楼主: 当年孟皓
2159 6

[有偿编程] SAS正则表达式问题咨询 [推广有奖]

  • 1关注
  • 0粉丝

本科生

17%

还不是VIP/贵宾

-

威望
0
论坛币
426 个
通用积分
50.4500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
115 点
帖子
10
精华
0
在线时间
141 小时
注册时间
2014-5-5
最后登录
2024-2-20

当年孟皓 发表于 2017-4-23 17:44:23 |显示全部楼层 |坛友微信交流群
5论坛币
最近初涉猎文本挖掘,请教下各位,在SAS EG正则表达式中如何定位中文?
PS:SAS所用编码格式为utf-8。

最佳答案

l1i2n3i4n5g 查看完整内容

data test; some_data='zhangsan张三123456789,lisi李四?wangwu王五123456'; run; data test1; set test; length together found $100.; retain together; stop = length(some_data); if _n_=1 then do; pattern="/[[:^ascii:]]+/"; pattern_ID=prxparse(pattern); start = 1; together=''; end; call prxnext(pattern_ID, start, stop, some_data, position, length); do while (position > 0); ...
关键词:正则表达式 表达式 如何定位 文本挖掘 表达式
l1i2n3i4n5g 在职认证  发表于 2017-4-23 17:44:24 |显示全部楼层 |坛友微信交流群
当年孟皓 发表于 2017-4-24 09:15
我试过用'/[\u4e00-\u9fa5/]'或者'/[0X4E00-0X9FA5]/',还是没用
data test;
some_data='zhangsan张三123456789,lisi李四?wangwu王五123456';
run;

data test1;
set test;
        length together found $100.;
        retain together;
        stop = length(some_data);
if _n_=1 then do;
        pattern="/[[:^ascii:]]+/";

        pattern_ID=prxparse(pattern);
        start = 1;
        together='';
end;
call prxnext(pattern_ID, start, stop, some_data, position, length);
        do while (position > 0);
        found = substr(some_data, position, length);
        together=catx('',together,found);
        CALL PRXNEXT(pattern_ID, start, stop, some_data, position, length);
        end;
run;
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
wps930720 + 1 + 1 + 1 精彩帖子
当年孟皓 + 1 + 1 + 1 精彩帖子

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

使用道具

hgz2373294 发表于 2017-4-23 20:32:56 |显示全部楼层 |坛友微信交流群
还真是个问题!
英文能处理

使用道具

l1i2n3i4n5g 在职认证  发表于 2017-4-23 20:54:48 |显示全部楼层 |坛友微信交流群
“UTF-8编码是一种针对Unicode的可变长度字符编码,又称万国码。UTF-8是Unicode的一种实现方式,也就是它的字节结构有特殊要求,所以我们说一个汉字的范围是0X4E00到0x9FA5,是指unicode值,至于放在utf-8的编码里去就是由三个字节来组织”
可考虑根据汉字编码范围来定位

使用道具

foocares 发表于 2017-4-24 00:56:11 |显示全部楼层 |坛友微信交流群
楼主你应该试试这两个系统选项:
options validvarname = ANY;
options validmemname = EXTEND;

设好后用proc options option=validvarname; proc options option=validmemname;
run;
来确认,然后看看SAS是不是已经接受中文了。

options validvarname = ANY;
*options validmemname = EXTEND;
data test;
"中文"n=10;
run;
proc contents;
proc print data =test;
run;


结果如下:

Obs    中文
   1      10


注:option validmemname是SAS9.4后有的选项。

使用道具

当年孟皓 发表于 2017-4-24 08:55:38 |显示全部楼层 |坛友微信交流群
foocares 发表于 2017-4-24 00:56
楼主你应该试试这两个系统选项:
options validvarname = ANY;
options validmemname = EXTEND;
谢谢您的解答,我的需求是:
比如一个地址字段里面包含中文项,我要把含有这些中文项的地址找出来,要用到正则表达式,但是我不知道找中文的语法怎么写。

使用道具

当年孟皓 发表于 2017-4-24 09:15:16 |显示全部楼层 |坛友微信交流群
l1i2n3i4n5g 发表于 2017-4-23 20:54
“UTF-8编码是一种针对Unicode的可变长度字符编码,又称万国码。UTF-8是Unicode的一种实现方式,也就是它的 ...
我试过用'/[\u4e00-\u9fa5/]'或者'/[0X4E00-0X9FA5]/',还是没用

使用道具

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

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

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

GMT+8, 2024-3-30 15:11