Regex sas,删除逗号和句点,正则表达式

Regex sas,删除逗号和句点,正则表达式,regex,sas,Regex,Sas,你们知道如何替换或删除逗号和句点吗 '18430109646000104331929350001,064380958490001,974317618110001,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,. ' 我必须连接以获得索赔编号列表(带前导零)。现在,我有了那个字符串,但我想删除最后的所有内容。我试过了,但没用 data OUT.REQ_1_4_25 ; set OUT.REQ_1_4_24; CONCAT1=PRXCHANGE('s/,.//',1,

你们知道如何替换或删除逗号和句点吗

'18430109646000104331929350001,064380958490001,974317618110001,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,. '
我必须连接以获得索赔编号列表(带前导零)。现在,我有了那个字符串,但我想删除最后的所有内容。我试过了,但没用

data OUT.REQ_1_4_25 ;
   set OUT.REQ_1_4_24;
   CONCAT1=PRXCHANGE('s/,.//',1,CONCAT);
run; 

顺便说一下,我使用的是SAS和正则表达式,类似于prxchange。

不需要正则表达式,除非您有比实际显示更复杂的东西

只需使用
scan()
函数,并告诉它使用
作为分隔符:

data claims;
  length claim $50;
  list = '18430109646000104331929350001,064380958490001,974317618110001,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.';
  cnt=1;
  claim=scan(list,cnt,'.,');
  do while (claim ne '');
    output;
    cnt=cnt+1;
    claim=scan(list,cnt,'.,');
  end;
  keep claim;
run;

PRXCHANGE函数的第二个参数指定应执行搜索和替换的次数。将1替换为-1将运行替换直到字符串结束,而不是只运行一次

此外,对“,.”将替换后跟任何字符的逗号(“.”是通配符)。要捕获逗号(“,”)或句点(“.”),最后一个是需要使用“\”转义的元字符:

CONCAT1=PRXCHANGE('s/[,\.]//',-1,CONCAT);
如果只想删除逗号-句点对,请删除方括号:

CONCAT1=PRXCHANGE('s/,\.//',-1,CONCAT);

这对我也有用

    data OUT.REQ_1_4_25 ;
   set OUT.REQ_1_4_24;
   CONCAT1=TRANWRD(CONCAT, ',.', ''); 

run;

我认为你应该问的问题是如何创建你在代码框中显示的“东西”。是否使用了| |串联运算符或CATX函数。可能只需要CATX和缺少的选项=“”;