Regex替换逗号分隔列表中的单词

Regex to replace word in comma separated list

本文关键字:单词 列表 分隔 替换 Regex      更新时间:2023-09-26

我正在使用javascript.replacement()从逗号分隔的单词列表中删除一个单词,并有一个有效的解决方案,但它很笨拙,我认为一定有更好的解决方案。

regex看起来像:

/,word1|word1,?/ 

处理前导、嵌入和尾随的情况,并删除正确数量的逗号,例如

word1,word2,word3
word2,word1,word3
word2,word3,word1
All result in word2,word3
word1 on its own is removed completely

有没有一种方法可以在正则表达式模式中不使用重复的单词1?

没有更好或更短的模式可以做到这一点。你所能做的就是通过在逗号可能缺失的地方添加单词边界来避免误报:

,word1'b|'bword1'b,?

如果你必须处理一个大字符串,并且只有在第一个字母不太频繁的情况下,你可以尝试使用第一个字符识别技术来减少测试模式的位置数量:

(?=[,w])(?:,word1'b|'bword1'b,?)

(注意,你需要在现实生活中测试一下,看看它是否真的有益。)

没有正则表达式的其他方式

如果您的目标字符串只是一个逗号分隔的列表,那么使用拆分/联接仍然是最佳解决方案。