在MYSQL中使用REGEXP替换子字符串

| 在我的论坛中,我有一个BB代码来显示YouTube视频。 以下选项可用于提取youtube视频代码并使用此代码构建嵌入代码:
[youtube]http://www.youtube.com/watch?v=_OBlgSz8sSM&feature=related[/youtube]
[youtube]http://www.youtube.com/watch?v=_OBlgSz8sSM[/youtube]
[youtube]_OBlgSz8sSM[/youtube]
所有这些选项均返回youtube视频代码__OBlgSz8sSM 升级到新版本的论坛后,带有youtube链接解析的前两个选项不起作用,只有带有[youtube] _OBlgSz8sSM [/ youtube]的最后一个选项有效。 这些BB代码是论坛帖子的一部分,不在数据库的单独字段中。 我的目标是替换所有以[youtube]开头并以[/ youtube]结尾且包含?v =的子字符串
[youtube]11 characters from ?v=[/youtube]
我正在使用MySQL 表名是POST 包含这些BB代码的字段名称为PAGETEXT 您能帮我建立此更新吗?     
已邀请:

bab

        编辑:以前的答案是完全错误的。 不使用正则表达式:
UPDATE POST SET PAGETEXT = REPLACE(PAGETEXT, \'[youtube]http://www.youtube.com/watch?v=\', \'[youtube]\');
UPDATE POST SET PAGETEXT = REPLACE(PAGETEXT, \'[youtube]www.youtube.com/watch?v=\', \'[youtube]\');
UPDATE POST SET PAGETEXT = REPLACE(PAGETEXT, \'[youtube]youtube.com/watch?v=\', \'[youtube]\');
UPDATE POST SET PAGETEXT = REPLACE(PAGETEXT, \'&feature=related[/youtube]\', \'[/youtube]\');
这将通过直接搜索删除并替换您不需要的数据。还有其他未在原始帖子中列出的模式/格式吗? 使用测试数据:
SET @test = \'test [youtube]youtube.com/watch?v=_OBlgSz8sSM&feature=related[/youtube] test\';
SET @test = REPLACE(@test, \'[youtube]http://www.youtube.com/watch?v=\', \'[youtube]\');
SET @test = REPLACE(@test, \'[youtube]www.youtube.com/watch?v=\', \'[youtube]\');
SET @test = REPLACE(@test, \'[youtube]youtube.com/watch?v=\', \'[youtube]\');
SET @test = REPLACE(@test, \'&feature=related[/youtube]\', \'[/youtube]\');
SELECT @test;

mysql> SELECT @test;
+------------------------------------------+
| @test                                    |
+------------------------------------------+
| test [youtube]_OBlgSz8sSM[/youtube] test | 
+------------------------------------------+
在运行完这四个之后,运行
SELECT COUNT(*) FROM POST WHERE PAGETEXT LIKE \'%?v=%\';
然后确保是否还有其他需要处理的内容。 始终先测试。     

要回复问题请先登录注册