例如我的文字就像这样 - "我有这些代码c 6780,u 6780,c0555"。输出当前给出的是 - "我有这些代码([cu] [0-9o] [0-9a-z] {3}),([cu] [0-9o] [0-9a -z] {3}),c0545"。但我期待的是 "我有这些代码c6780,u6780,c0555"。 我试过这段代码。
DATA REPLACE_PAT;
set text;
IF _N_ =1 THEN PATTERN = PRXPARSE ("s/([cu]\s[0-9o][0-9a-z]{3})/([cu][0-9o][0-9a-z]{3})/");
RETAIN PATTERN;
CALL PRXCHANGE(PATTERN, -1, text);
run;
如何更改代码才能实现此目标?
答案 0 :(得分:1)
您需要将要保留的内容(而不是整个内容)包含在内以创建捕获组,然后使用$1
$2
引用捕获组。
DATA REPLACE_PAT;
set text;
IF _N_ =1 THEN PATTERN = PRXPARSE ("s/([cu])\s([0-9o][0-9a-z]{3})/$1$2/");
RETAIN PATTERN;
CALL PRXCHANGE(PATTERN, -1, text);
run;
您还可能希望在最终o
之后查看/
选项,以避免在 n = 1位时执行愚蠢行为。