regex - SAS中的Perl正则表达式PRXCHANGE
问题描述
我想对以下陈述有所帮助。
我试图将 2 个 prxchange 语句合并为一个。
该代码的目的是将任何不可打印的 ASCII 字符更改为相应的用双括号括起来的 2 个字符的十六进制代码,例如 [A0]。
下面的第一条语句更改了十六进制字符 xA0。第二个更改 x20 到 x7E 范围内的十六进制字符。
是否可以将这些语句合并为一个?
var = prxchange ( "s/([\xA0])/[A0]/" , -1 , varcontent);
var = prxchange ( "s/([^\x20-\x7E])/[$1]/" , -1 , varcontent);
解决方案
您是否考虑过使用该HEX.
格式来代替?如果您有 SAS,Regex 似乎是一种相当复杂的方法。
http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000205154.htm
例如
data _null_;
length a b $32;
a = '09400940'x;
do i = 1 to length(a);
char = substr(a,i,1);
rank = rank(char);
if rank < 32 then b = cats(b,'[',put(rank,hex2.),']');
else b = cats(b,char);
end;
put a= $32. / b= $32.;
run;
推荐阅读
- node.js - 升级到 sequelizejs 6 后,model.build() 停止工作
- java - MacBook 上 IntelliJ IDEA 中的简单 scala 代码编译错误
- c++ - 没有为此文档加载任何符号 - 显然也没有执行?
- javascript - 将 SweetAlert2 添加到 update.js.erb
- r - 在 chartSeries 中绘制水平线 get.current.chob() 中的错误:设置不正确或缺少图形设备
- python - 在 python 中比较文件、检查文件名、文件大小和校验和 md5 的路径
- java - 带有 for 循环和 Scanner 的 LinkedList
- javascript - 窗口调整大小之间的 JavaScript Canvas save() 和 restore()
- python - 美丽的汤解析多个标签
- switch-statement - c# 8 switch 表达式不够“聪明”