mysql - 如何替换正则表达式中的分隔词

标签 mysql regex

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

相关文章:

mysql - 性能连接日期介于开始日期和结束日期之间的行

mysql - 如何: Select from MYSQL text field type only the numbers that divided by | using REGEXP?

mysql - 如何在 Hibernate 中为我使用外键列的 where 子句编写更新查询?

mysql - MBR包含距离位置帮助MySQL

php - 在任意正则表达式中插入正向后向模拟字节偏移的后果

javascript - 正则表达式从 CSS 选择器字符串中提取 HTML5 类

mysql - 如何在没有公共(public) "GROUP BY"元素的情况下合并 2 个查询的结果

python - 如何使用 python 库 re.sub 去除文件的开头?

php - 计算一串单词中匹配单词的百分比

javascript - 如何使用 match 从字符串中返回字符?