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

SAS使用PRXPARSE提取两指定字符串间内容的语法问题

问题分析

你的代码存在以下几处错误:

  • 正则表达式存在多余转义:你在alone:前加了\(,这会匹配字面量左括号(,但示例文本中alone:前没有左括号,无法匹配到目标文本。
  • 正则语法不完整:PRXPARSE的正则规则需要完整包裹在/分隔符内,你写的正则末尾只有\./),缺少了结束的/,属于语法错误。
  • 捕获组索引错误:你需要提取的是alone:和句号之间的内容,对应原正则里的第二个捕获组(第一个捕获组是alone: 本身,第三个是末尾的句号),你当前调用prxposn时指定索引为1,只会拿到alone: ,拿不到目标内容。
  • 缺少retain声明:如果不写retain re;,正则变量re只会在第一行观测时被赋值,后续观测会被自动重置为缺失值,导致匹配失效。
修改后代码
data parse_data;
    set data;
    BY num;
    retain re;
    if _N_=1 then re = PRXPARSE("/alone: (.*?)\./");
    if prxmatch(re, text) then new_text=prxposn(re, 1, text);
run;
代码说明
  • 优化了正则结构:去掉多余转义,调整捕获组逻辑,只把需要提取的中间内容放在第一个捕获组里,不用额外捕获无意义的alone: 和末尾句号,简化了调用逻辑。
  • 新增retain re语句,保证正则表达式对象在所有观测中都可以正常使用。
  • 调整prxposn的索引为1,直接获取目标内容,示例文本执行后new_text的值就是你需要的Osteoporosis。

内容的提问来源于stack exchange,提问作者the-local-dreamer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:24:07