如何在 MySQL 中使用正则表达式删除 href 属性中的所有空格

Posted

技术标签:

【中文标题】如何在 MySQL 中使用正则表达式删除 href 属性中的所有空格【英文标题】:How to to remove all spaces in href attribute with regular expression in MySQL 【发布时间】:2019-12-23 05:44:22 【问题描述】:

我有一个用于发布内容的 WordPress 数据库,其中包含一些链接,这些链接在我希望删除的 href 属性之间添加了额外的空格。

所以

<a href="/condition/ # how">text</a>

应该变成:

<a href="/condition/#how">text</a>

我尝试使用 REGEXP_REPLACE 但不起作用:

UPDATE `wp_posts` SET post_content=REGEXP_REPLACE(post_content, '/href="\s"/gi', '') 
WHERE post_content REGEXP '/href="\s"/gi'

mysql 版本 5.6.44

【问题讨论】:

【参考方案1】:

您需要更改您的 REGEXP 以匹配所有空格。有一个很好的旧表达式可以匹配给定属性中的所有空格(在您的情况下是href)。

(?:\G(?!\A)|href=")[^"\s]*\K(?:\s|"(*SKIP)(*F))

此表达式匹配href 属性引号内的全空格。我为你制作了a demo example of working solution。

【讨论】:

我把它改成了:UPDATE wp_posts SET post_content=REGEXP_REPLACE(post_content, '/(?:\G(?!\A)|href=")[^"\s]*\ K(?:\s|"(*SKIP)(*F))/gi', '') WHERE post_content REGEXP '/(?:\G(?!\A)|href=")[^"\s ]*\K(?:\s|"(*SKIP)(*F))/gi' 但我得到一个错误:'repetition-operator operand invalid' from regexp Artem,你能更新我的 SQL 语句来适应它吗?我无法让它工作..【参考方案2】:

您可以尝试使用此插件来搜索和替换空白 insto href="" 参数。

https://es.wordpress.org/plugins/search-and-replace/

请您在应用更改之前创建数据库备份。

【讨论】:

谢谢,但我的问题是关于使用 REGEXP_REPLACE 的正确 MySQL 语句。

以上是关于如何在 MySQL 中使用正则表达式删除 href 属性中的所有空格的主要内容,如果未能解决你的问题,请参考以下文章

如何使用REPLACE和正则表达式替换MYSQL中字符串中的多个关键字[重复]

MySQL正则表达式搜索和替换[重复]

使用正则表达式删除Mysql中列值中的括号()

MYSQL使用正则表达式过滤数据

如何在 Python 中使用正则表达式删除右方括号?

MYSQL - 如果不在类别中并且正则表达式匹配内容,则:(添加到类别并从其他类别中删除)