我有下划线定界的字符串或单词,例如: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/