如何限制正则表达式的长度?

How to limit the length in Regex?

我在使用正则表达式时遇到一些问题,我相信这里有人可以帮助我。 我正在抓取一个网页并想找到 Wordpress link 的第一个实例。所以例如我有这样的东西:

preg_match("/<link\shref=.+\/wp-content\/themes\/(.+)\//", $site, $match);

问题是,有些页面的图片来自具有相同 wp-content/theme 结构的 Wordpress 网站,然后正则表达式会捕获页面上的第一个 <link 并向下移动页面直到 wp-content/theme/ 图像,并给了我一个误报。

我一直在努力解决这个问题,但我似乎无法成功。我想过以某种方式重新表达头部并只在那里搜索,但我无法做到。 我真正需要做的是找到一个 <link 然后找到下一个 > 并且只有当它们之间存在 wp/content/ 时才会给我一个肯定的结果。

我对正则表达式不是很了解。我知道我猜的基础知识,但这个可能有点超出我的能力范围。

如有任何意见,我将不胜感激,我相信有一种简单的方法可以做到这一点。

谢谢

这里有两个问题,你问的只是其中一个。

你问的问题可以通过说“继续直到你找到一个 > 来解决,它可以通过使用 [^>]+ 而不是 .+[=13= 来解决]

另一个问题是您正在使用正则表达式来解析 HTML。请改用 HTML 解析库。