寻求WordPress查找替换用RegEx:匹配含指定关键词的完整<a>标签
匹配含指定关键词的完整标签正则表达式(WordPress 查找替换用)
直接给你能用的正则,当关键词是example时,正则代码如下:
<a\b[^>]*>.*?example.*?<\/a>
简单拆解每个部分(完全不懂正则也能看懂):
<a\b:精准匹配<a标签的开头,\b是单词边界,防止误匹配类似<abc>这种带a的其他标签[^>]*:匹配<a标签里的所有属性(比如href、target这些),[^>]意思是"除了>之外的任意字符",*表示可以有零个或多个这样的字符>:匹配标签开头的闭合符号>.*?example.*?:匹配包含关键词example的标签内容,.*?是"非贪婪匹配",简单说就是只找最近的匹配,不会一口气把页面里所有标签都连起来匹配<\/a>:匹配</a>标签结尾,这里的\是转义符号,因为正则里/是特殊字符,必须转义才能正常识别
WordPress里怎么用这个正则做查找替换:
最安全的方式是用插件,比如「Better Search Replace」:
- 安装并激活插件,在后台「工具」里找到它
- 在「Search for」框里粘贴上面的正则,记得勾选「Use regex」选项
- 在「Replace with」框里输入你要替换成的内容(比如直接写文字,或者新的标签)
- 选择要操作的数据库表,一般选
wp_posts就行(如果你的表前缀不是wp_,要对应改) - 先点「Run Search」做测试,确认匹配的内容都是你要找的,再点「Run Replace」执行替换
重要提醒:
- 一定要先备份数据库!不管操作多简单,备份能避免出错后无法挽回
- 如果关键词里有特殊字符(比如
.、*、+、?这些),要在前面加\转义,比如关键词是exa.mp.le,要写成exa\.mp\.le - 非贪婪匹配的
.*?不能改成.*,不然会匹配从页面第一个到最后一个的所有内容,完全不是你要的结果
内容的提问来源于stack exchange,提问作者Stephan Bahr
相关产品推荐
相关产品推荐

