我有一个下划线分隔的字符串或单词,例如:
word1_word2_word3_word4
以及允许值的列表,例如 word1, word3
目标是过滤掉不允许的值并将它们替换为……所以结果字符串将为 word1_..._word3_...
这需要在 MySQL 中完成,我计划使用 REGEXP_REPLACE,但我所有尝试使用可处理所有实例(例如第一个和最后一个词)的工作正则表达式的尝试都失败了。
为了简化操作,我尝试在字符串中添加前导和尾随下划线,使其变为 _word1_word2_word3_word4_
并做:
(?<=_)[^_]+(?=_)
它很好地匹配了分隔符之间的所有字符串,但是我不知道如何排除 word1 和 word3。
最佳答案
只是在比赛开始前对 word1|word3
进行否定预测:
(?<=_)(?!word1|word3)[^_]+(?=_)
如果匹配也可能从字符串的开头开始或在字符串的结尾结束(没有 _
定界符),则使用 ^
交替查找和$
:
(?<=_|^)(?!word1|word3)[^_]+(?=_|$)
关于mysql - 如何替换正则表达式中的分隔词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57836596/