跳转到主要内容

如何在Ahrefs中使用正则表达式

学习如何在Site Audit高级版筛选器中使用正则表达式以及如何为抓取设置"包含"和"排除"规则。

Anna avatar
作者:Anna
本周更新

正则表达式(亦称REGEX或REGEXP)帮助您找到与特定模式匹配的URLs或文本。

💡在Site Explorer、Site Audit和我们的API中的某些端点上支持REGEX:

了解更多有关您可以使用它们的所有地方。

正则表达式的工作原理

让我们从最简单的例子转到更高级版的例子。

以下配置包含所有包含“blog”一词的URL,并排除包含“product”一词的URL。

这指示我们的机器人抓取:
https://ahrefs.com/blog
https://ahrefs.com/blog/seo-techniques/
https://ahrefs.com/academy/blogging-for-business

并忽略:
https://ahrefs.com/blog/category/product-blog/
https://ahrefs.com/blog/ecommerce-out-of-stock-products/

这很简单,对吧?

但如果您想特别包含 /blog/ 子文件夹中的URL,但不包括https://ahrefs.com/academy/blogging-for-business,该怎么办?

您可以使用更高级的模式:

您可能想知道“blog”前后的那些符号是什么。

在正则表达式中,您需要“转义”一些符号,以免它们被识别为特殊字符。 为此,请在字符前使用反斜杠\

例如,正则表达式中的简单点.表示任何字符。 但\.作为句号符号工作。 这就是为什么我在上面的示例中像这样对斜线字符进行转义:\/

Ahrefs如何处理多个REGEX表达式

请注意,可以在Site Audit的抓取设置中应用多个模式以包含或排除URL。 如果某项规则没有找到匹配项,该规则将被跳过。

以上规则将指示我们的爬虫抓取包含以下单词的URL:

“blog”或者“product”

并且不包含以下单词:

“blogging”或“productive”。

对于多个URL重写规则,每个新规则将依次对之前重写的结果执行。

一些便捷的正则表达式令牌

^ - 此符号表示URL的开头

$ - 此符号表示URL的结尾

. - 小数点匹配任何单个字符

* - 匹配前面的表达式0次或多次

+ - 匹配至少1次的前面的

? - 匹配上一个的0次或1次

| - 等同于或。

[__] - 类似于|,但可以用来定义范围

(__) - 括号将正则表达式括起来

\d - 匹配一个数字

\D - 匹配一个非数字

\w - 匹配一个单词字符

\W - 匹配一个非单词字符

不同的工具和平台可能使用不同的正则表达式库。 我们的Site Audit使用RE2您可以在这里找到其完整语法

一些实用的示例

1。 /wp-content/子文件夹中的Https URLs

^https:.*\/wp-content\/

^ 指示URL的开头。 此规则将匹配所有以“https:”开头的URL,后跟在“/wp-content/”之前的0个或任意个字符.*

匹配模式的URL:
https://ahrefs.com/blog/wp-content/uploads/2019/03/fb-ranking-1-image-1.png

不匹配模式的URL:
http://ahrefs.com/blog/wp-content/uploads/2019/03/fb-ranking-1-image-1.png

2。 子文件夹中的URL,包括目录URL本身。

\/blog(\/.*)?$

此规则将匹配以“/blog”结尾的所有URL,后面可以选择一个斜杠和0个或任意个字符(\/.*)?$。 此模式中的问号匹配括号中的表达式0到1次,使其可选

匹配模式的URL:
https://ahrefs.com/blog
https://ahrefs.com/blog/301-redirects/

不匹配模式的URL:
https://ahrefs.com/blogging
https://ahrefs.com/academy/blogging-for-business

3。 包含@或%符号的URL

@|%[@%]

|[__]作为OR工作

匹配模式的URL:
https://ahrefs.com/@timsoulo
https://ahrefs.com/%D1%81%D0%B5%D0%BE

不匹配模式的URL:
https://ahrefs.com/blog/nofollow-links

4. Woocommerce中的“Add to Cart”URL

\?add-to-cart=

请记住,?是正则表达式中的特殊符号。 若要将其用作简单的问号,请不要忘记像这样转义它:\?

匹配模式的URL:
https://yourdomain.com/?add-to-cart=25

不匹配模式的URL:
https://yourdomain.com/smartphones

5。 包含年份(4位数字)的URL

[0-9]{4}\d{4}

[0-9]{4}将匹配所有包含四个{4}连续数字[0-9]的URL

\d{4}\d的作用相同,表示一个数字

匹配模式的URL:
https://yourdomain.com/best-smartphones-2019

不匹配模式的URL:
https://yourdomain.com/smartphones

6。 子域的所有URL(包括http和https)

^https?:\/\/help.ahrefs.com

此规则将匹配以"http://help.ahrefs.com"或"https://help.ahrefs.com"开头的所有URL。

这里的问号s?表示“s”是可选的,所以httphttps都将匹配此规则。

匹配模式的URL:
https://help.ahrefs.com
http://help.ahrefs.com/
http://help.ahrefs.com/site-audit

不匹配模式的URL:
https://ahrefs.com/site-audit
ftp://help.ahrefs.com

7。 各种文件URL

\.(jpg|gif|bmp|png|css|pdf)$

此规则将匹配以.jpg, .gif, .bmp, .png, .css, 或.pdf结尾的所有URLs。

您可以缩减此表达式以定位更少的扩展名。 例如,仅以.jpg.png结尾的URLs:


.*\.(jpg|png)$

括号(__)将正则表达式括起来且|代表或者

匹配模式的URL:
https://ahrefs.com/blog/wp-content/uploads/2019/03/fb-ranking-1-image-1.png
http://ahrefs.com/blog/wp-content/uploads/2019/03/fb-ranking-1-image-1.png

不匹配模式的URL:
https://ahrefs.com/site-audit

8。 在Site Audit中使用URL重写规则来抓取测试网站

您可以在Site Audit设置中使用URL重写规则将URL的某些部分替换成另一个值。

例如。 当您的测试网站建立在子域上时,例如staging.ahrefs.com

此规则会将每个URL中的“ahrefs.com”替换为“staging.ahrefs.com”

9。 使用带有编号捕获组的URL重写规则

使用捕获组,您可以用一个规则替换URL的多个部分。

匹配模式:

www\.ahrefs\.com([^\?|#]*)?([#]?[^\?]*)\??(.*)

替换为:

www.ahrefs.com\1?parameter1=5273&\2?parameter2=7465&\3

([^\?|#]*) 是第一个捕获组

([#]?[^\?]*) 是第二个捕获组

(.*) 是第三个捕获组

\1?parameter1=5273&\2\3

用“?parameter1=5273”替换第1个捕获组的值。

\2?parameter2=7465&用“?parameter2=7465&”替换第2个捕获组的值。

\3插入匹配到的第三个捕获组的值

6。 过滤长度超过50个字符的文本

^[\s\S]{50,}$

更多资源

希望这篇文章帮助您学习一些正则表达式可以做的很酷的技巧。

您可以在此网站上测试您的正则表达式:https://regex101.com/。 请注意,您应该从左侧菜单中选择“Golang”。

这是否解答了您的问题?