2017-07-28 15 views
0

我試過這段代碼。SAS將第二個字符字母o替換爲0的模式

DATA want; 
PATTERN = PRXPARSE ("s/([cu])[o]([0-9a-z][0-9][0-9a-z])/$10$2/"); 
text="there was a co545 code in code c 0678"; 
RETAIN PATTERN; 
CALL PRXCHANGE(PATTERN, -1, text); 
run; 

結果是「有一個545碼的代碼C 0678」 如何更改我的代碼以實現「有中碼c 0678一c0545代碼?我要的是改變字母o,以零(第二個字符)

回答

1

你需要做一些事情讓你想$1而不是$10它理解。從這個網站:http://www.regular-expressions.info/replacebackref.html

Putting curly braces around the digit ${1} isolates the digit from any 
literal digits that follow. 

所以使用:

PATTERN = PRXPARSE ("s/([cu])[o]([0-9a-z][0-9][0-9a-z])/${1}0$2/"); 
0

通過首先執行兩個步驟引入空間和以後的下一個步驟,以去除空間。

DATA want; 
PATTERN = PRXPARSE ("s/([cu])[o]([0-9a-z][0-9][0-9a-z])/$1 0$2/"); 
PATTERN1 = PRXPARSE("s/([cu])\s([0-9a-z][0-9][0-9a-z]/$1$2/"); 
text="there was a co545 code in code c 0678"; 
RETAIN PATTERN; 
RETAIN PATTERN1; 
CALL PRXCHANGE(PATTERN, -1, text); 
CALL PRXCHANGE(PATTERN1, -1, text); 
run; 
相關問題