You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PRX函数处理前,是否存在原生SAS值转义函数?

用SAS原生函数处理PRX元字符转义问题

你的问题核心是当宏参数包含PRX元字符(如/、()、.等)时,手动拼接正则表达式会破坏语法,导致prxmatch失效。SAS提供了PRXQUOTE原生函数,可以自动将任意文本转换为PRX可直接使用的字面量正则表达式,无需手动转义。

解决方案:修改宏使用PRXQUOTE函数

将你的宏代码修改为以下形式,利用PRXQUOTE自动处理元字符转义:

%macro test(exp=);
  proc sql noprint;
    select      file
    into        :_input_file trimmed
    from        folder_content
    where       prxmatch(prxquote('oi', "&exp."), strip(file))
    ;
  quit;
%mend test;

函数说明

PRXQUOTE的作用是:

  • 自动转义输入字符串中的所有PRX元字符(包括/、()、.、*、+等)
  • 自动为生成的正则表达式添加分隔符(默认是/)
  • 支持传入正则修饰符(示例中的oi表示编译一次正则表达式、忽略大小写)
  • 返回完整的、可直接传入prxmatch的正则表达式字符串

使用示例

调用宏时直接传入原始文本即可,无需手动转义:

%test(exp=/home/user/file.txt);
%test(exp=file(name).txt);

以上调用中,/、()等元字符会被PRXQUOTE自动转义,prxmatch能正确匹配目标文本。

原代码问题分析

你原来的代码通过"/&exp.$/oi"手动拼接正则,当&exp包含元字符时,会被当作正则语法解析而非普通文本,比如/会被识别为正则分隔符,直接导致正则表达式语法错误,匹配失败。

内容的提问来源于stack exchange,提问作者Gaadek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 23:02:47