如何限制正则表达式的长度?
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 解析库。
我在使用正则表达式时遇到一些问题,我相信这里有人可以帮助我。 我正在抓取一个网页并想找到 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 解析库。