mysql - 一种在语言标记后清理特定字符串的方法

标签 mysql sql regex

好的,我的数据库转储中有这些字符串:

"[:nl]Some nl text here[:fr]Some french text here"
"[:nl]Some other nl text here[:fr]Some other french text here"

我想要做的是对转储进行搜索替换,并删除 [:fr] 之后的字符串,直到结束双引号 ",与标签本身一起 [:fr]

有人可以提供可以做到这一点的正则表达式吗?

最佳答案

尝试这样:

select REPLACE('"[:nl]Some nl text here[:fr]Some french text here"', 
               SUBSTRING('"[:nl]Some nl text here[:fr]Some french text here"', 
                         LOCATE('[:fr]', '"[:nl]Some nl text here[:fr]Some french text here"'), LENGTH('"[:nl]Some nl text here[:fr]Some french text here"') - LOCATE('"', 
                          REVERSE('"[:nl]Some nl text here[:fr]Some french text here"')) - LOCATE('[:fr]', "[:nl]Some nl text here[:fr]Some french text here") + 2), '')

<强> SQL FIDDLE DEMO

编辑:

试试这个:

select substring_index('[:nl]Some nl text here[:fr]Some french text here','[:fr]',1)

<强> SQL FIDDLE DEMO

关于mysql - 一种在语言标记后清理特定字符串的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35625416/

相关文章:

mysql - SQL查询问题[内连接和多重选择]

mysql - 如何在一行中存储多个id?

mysql - 选择特定玩家的排名sql查询

php - 正则表达式 - 匹配单词的缩写

php - 检查当前登录用户的状态

php - 与 osCommerce 商店共享个人项目的登录名和密码

sql - 如果表返回空值,如何插入字符串?

php mysql 显示表中的记录

c# - 正则表达式需要识别句子之间没有空格的地方

java - 如何用两个分隔符拆分字符串?