我有下划线定界的字符串或单词,例如:
word1_word2_word3_word4和允许的值列表,例如word1, word3
目标是过滤掉不允许的值,并用…代替它们,因此结果字符串将为word1_..._word3_...
这需要在MySQL中完成,我计划使用REGEXP_REPLACE,但是我尝试使用可处理所有实例(例如第一个和最后一个单词)的正则表达式的所有尝试均失败了。

为了简化操作,我尝试在字符串中添加前导和尾随下划线,使其变为_word1_word2_word3_word4_并执行以下操作:
(?<=_)[^_]+(?=_)可以很好地匹配定界符之间的所有字符串,但是我不知道如何排除word1和word3。

最佳答案

比赛开始前,对word1|word3的否定前瞻:

(?<=_)(?!word1|word3)[^_]+(?=_)


如果匹配也可以从字符串的开头开始或在字符串的结尾结束(不带_分隔符),则用^$替换环视:

(?<=_|^)(?!word1|word3)[^_]+(?=_|$)


https://regex101.com/r/QFb1p7/1

关于mysql - 如何在正则表达式中替换定界词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57836596/

10-13 23:22