regex - 如何用变量替换文本模式
问题描述
我知道如何用prxchange()
某种模式替换文本。但它受到常量字符串或某些特殊格式(如大写或小写)的限制。你知道如何用变量替换模式中的文本吗?请给我看一些例子。
解决方案
假设您的意思是询问如何替换在字符串中划分的变量名。
Perl有插值,SAS没有。
您将必须选择一个划分方案,然后使用PRXNEXT
在其中查找令牌以替换为变量值。
例子:
变量名称被划分为#<variable-name>#
.
代码:
data want;
array patterns(6) $100 _temporary_
( 'The student name is #name#'
, 'I was #name#''s lab partner'
, '#name# is a swell fella'
, 'This won''t work. Next year #name# will be #age#'
, '#name# is #height# inches tall'
, '#000#, not a #replacable variable#. #name# is.'
);
set sashelp.class;
where sex='M';
* pattern to discover a token, i.e. a demarcated variable name;
id = prxparse('/#([_a-z][_a-z0-9]*)#/i');
do index = 1 to dim(patterns);
length result $200;
result = patterns(index);
do start=1 to length(result);
call prxnext(id, start, -1, result, pos, len);
if pos = 0 then leave;
* extract variable name from token;
varname = prxposn(id,1,result);
* replace token with the formatted value of the variable;
result = transtrn(result, cats('#',varname,'#'), strip(vvaluex(varname)));
end;
output;
end;
keep name result;
run;
推荐阅读
- c# - 如何将 XAML 文件中 LayoutAnchorableItem 的 Style 属性与 AvalonDock 绑定?
- c++ - 如何查看结构、类对象的内存布局
- api - POSTMAN - 测试失败假为真
- sql - ORACLE:在第 1 列中选择 de MAX 值后,在第 2 列中选择 de MAX 值
- r - 删除 geom_tile 中的空白并匹配 geom_vline&hline 位置
- c# - 无法解析“Jabberwocky.Core.Caching.ICacheProvider”类型的服务
- python - 根据行相关和列相关条件设置数据框值
- python - Python:我有一个日期列表。我想计算到当前日期的天数
- sql - 仅匹配 Redshift Regex 中的百分比值
- mysql - 安装 MySQL 服务器 8.0.14 失败