如何在sas中提取字符串的一部分
how to extract parts of string in sas
我在一列中有多个值,我想提取 it.Lets 的一部分,考虑在我的列 A
A B
wwwgooglecom google
wwwyoutubecom youtube
wwwwwwwebcom wwwweb
wwwmywebsiteisgoodcom websiteisgood
www.fxr.com fxr
我想从上面的列中提取 www 和 com A.To 实现这个我应该使用哪个 sas 函数? B 列显示预期 output.I 尝试使用 substr 函数。
a1 = substr(A,3,1);
a2 = substr(A,3,-1);
b = cat(a1,a2);
尝试在作业的左轴上使用 INDEX()
函数和 substr()
。您还可以使用 compress()
函数删除 .
:
data test;
format A .;
input A $;
datalines;
wwwgooglecom
wwwyoutubecom
wwwwwwwebcom
wwwmywebsiteisgoodcom
www.fxr.com
;
data want;
set test;
B = compress(A,".");
if index(B,"www") then
substr(B, index(B,"www"), 3) = "";
if index(B,"com") then
substr(B, index(B,"com"), 3) = "";
B = strip(B);
run;
我建议使用 SAS PRX* 系列函数来执行 Perl 正则表达式匹配和替换。
此示例使用 PRXCHANGE
搜索:
- 开始
www
,然后是
- 零个或一个句点
\.?
,后跟
- 一个组,它是任何东西的非贪婪匹配
(.*?)
,直到
- 结束零或一个句点
\.?
,然后是
- 一个结局
com
捕获的组 </code> 用作替换。</p>
<pre><code>data whatsup;
length a b ;
input A& B&;
c = prxchange('s/^www\.?(.*?)\.?com$//', 1, trim(a));
put / a= / b=/ c=;
datalines;
wwwgooglecom google
wwwyoutubecom youtube
wwwwwwwebcom wwwweb
wwwmywebsiteisgoodcom websiteisgood(bad sample data?)
www.fxr.com fxr
run;
有替代方案可以使用 PRXMATCH
我在一列中有多个值,我想提取 it.Lets 的一部分,考虑在我的列 A
A B wwwgooglecom google wwwyoutubecom youtube wwwwwwwebcom wwwweb wwwmywebsiteisgoodcom websiteisgood www.fxr.com fxr
我想从上面的列中提取 www 和 com A.To 实现这个我应该使用哪个 sas 函数? B 列显示预期 output.I 尝试使用 substr 函数。
a1 = substr(A,3,1);
a2 = substr(A,3,-1);
b = cat(a1,a2);
尝试在作业的左轴上使用 INDEX()
函数和 substr()
。您还可以使用 compress()
函数删除 .
:
data test;
format A .;
input A $;
datalines;
wwwgooglecom
wwwyoutubecom
wwwwwwwebcom
wwwmywebsiteisgoodcom
www.fxr.com
;
data want;
set test;
B = compress(A,".");
if index(B,"www") then
substr(B, index(B,"www"), 3) = "";
if index(B,"com") then
substr(B, index(B,"com"), 3) = "";
B = strip(B);
run;
我建议使用 SAS PRX* 系列函数来执行 Perl 正则表达式匹配和替换。
此示例使用 PRXCHANGE
搜索:
- 开始
www
,然后是 - 零个或一个句点
\.?
,后跟 - 一个组,它是任何东西的非贪婪匹配
(.*?)
,直到 - 结束零或一个句点
\.?
,然后是 - 一个结局
com
捕获的组 </code> 用作替换。</p>
<pre><code>data whatsup;
length a b ;
input A& B&;
c = prxchange('s/^www\.?(.*?)\.?com$//', 1, trim(a));
put / a= / b=/ c=;
datalines;
wwwgooglecom google
wwwyoutubecom youtube
wwwwwwwebcom wwwweb
wwwmywebsiteisgoodcom websiteisgood(bad sample data?)
www.fxr.com fxr
run;
有替代方案可以使用 PRXMATCH