gpt4 book ai didi

regex - 如何删除SAS中两个字符串之间的所有字符(0个或多个)

转载 作者:行者123 更新时间:2023-12-05 01:08:07 26 4
gpt4 key购买 nike

我正在尝试将 .json 文件解析为 SAS。为了处理 .json 文件中的列表,我想删除 [item1, item2, item3, .... itemn] 之间的所有逗号,但保留不在 [] 内的逗号。

我想我应该能够使用 prxchange 正则表达式来做到这一点......我可以让它适用于两个项目列表,但无法弄清楚如何改变它以使用不同数量的列表。
newvariable=prxchange('s/(\[\w+),(\w+\])/$1 $2',-1,oldvariable);
例子:

oldvariable = "{"hospital": "NOP", "drugs": ["penicillin", "ampicillin", "cephalosporin"]}" 
newvariable = "{"hospital": "NOP", "drugs": ["penicillin" "ampicillin" "cephalosporin"]}"

oldvariable = "{"hospital": "KOP", "drugs": ["tetracycline"]}"
newvariable = "{"hospital": "KOP", "drugs": ["tetracycline"]}" 

也许有更好的方法来解决这个问题......

最佳答案

有时,处理正则表达式的最简单方法是将其分解为多个步骤。在这种情况下,首先将数组取出,然后用空格替换逗号:

data _null_;
oldvariable = '{"hospital": "NOP", "drugs": ["penicillin", "ampicillin", "cephalosporin"]}';
arrayExpr=prxparse( '/\[[^]]+\]/' );
call prxsubstr( arrayExpr, oldvariable, position, length );
put position length;
newvariable=cat(
substr( oldvariable, 1, position - 1 ),
prxchange( 's/, / /', -1, substr( oldvariable, position, length ) ),
substr( oldvariable, position + length )
);
put newvariable;
run;

您原来的正则表达式也有一些问题。在众多正则表达式助手站点中 this one is my favorite .

关于regex - 如何删除SAS中两个字符串之间的所有字符(0个或多个),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17582565/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com