如何在 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。
【讨论】:
我把它改成了:UPDATEwp_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 属性中的所有空格的主要内容,如果未能解决你的问题,请参考以下文章