gpt4 book ai didi

javascript - 替换定界符之间的不匹配项

转载 作者:行者123 更新时间:2023-11-29 14:51:44 26 4
gpt4 key购买 nike

我有一个输入字符串:

12345,3244,654,ffgv,87676,988ff,87657

我很难使用正则表达式将字符串中不是五位数的所有项转换为常量 34567。所以,输出将是这样的:

12345,34567,34567,34567,87676,34567,87657

为此,我考虑了两种选择:

  1. negated character class:没有用,因为它不直接在这个表达式,[^\d{5}],上执行

  2. 先行和后行:这里的问题是它不包含此表达式 ,(?!\d{5})(?<!\d{5}), 的结果中的非匹配部分以进行替换/替换。

一旦找到所需的表达式,它就会给出一个结果,以便可以使用标记区域(如 \1\2 )替换不匹配的部分。

正则表达式工具中是否有任何机制可以实现上述示例中提到的输出?

编辑:我非常感谢那些回答非正则表达式解决方案的人,但如果您提供基于正则表达式的解决方案,我将更加感激。

最佳答案

为此您不需要正则表达式。您可以使用 str.split 首先在逗号处拆分字符串,然后检查每个项目的长度是否大于或等于 5 并且它只包含数字(使用 str.isdigit)。最后使用 str.join 组合所有项目。

>>> s = '12345,3244,654,ffgv,87676,988ff,87657'
>>> ','.join(x if len(x) >= 5 and x.isdigit() else '34567' for x in s.split(','))
'12345,34567,34567,34567,87676,34567,87657'

Javascript 版本:

function isdigit(s){
for(var i=0; i <s.length; i++){
if(!(s[i] >= '0' && s[i] <= '9')){
return false;
}
}
return true;
}
arr = "12345,3244,654,ffgv,87676,988ff,87657".split(",");

for(var i=0; i < arr.length; i++){
if(arr[i].length < 5 || ! isdigit(arr[i])) arr[i] = '34567';
}
output = arr.join(",")

关于javascript - 替换定界符之间的不匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24628584/

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