PHP 正则表达式帮助 - 在正则表达式中间搜索字符串



我需要一点正则表达式的帮助。

Haystack是整个页面的源代码。我正在搜索末尾有jpg和jpeg的链接,中间有"pdp-zoom"的链接。

像这样的链接:

https://mosaic04.ztat.net/vgs/media/packshot/pdp-zoom/BR/71/1A/01/7Q/11/BR711A017-Q11@4.jpg

或者这个:

//mosaic04.ztat.net/vgs/media/packshot/pdp-zoom/BR/71/1A/01/7Q/11/BR711A017-Q11@4.jpg

我有:

(http)?s?:?(//[^,|"']*.(?:jpg|jpeg))

并且需要集成"PDP-zoom"。

我在 php 5.6 和 preg_match_all 中使用它。

使用这个:

(https?:)?//[^'"s]*/pdp-zoom/[^'"s]*.jpe?g

解释:

(https?:)?          # http: or https:, optional
//                  # double slashes
[^'"s]*            # 0 r more any character that is not quotes or spaces
/pdp-zoom/          # literally /pdp-zoom/
[^'"s]*            # 0 r more any character that is not quotes or spaces
.                  # a dot
jpe?g               # jpeg or jpg

演示

尝试正则表达式: (?:http(?:s)?:)?//[^,|"']+?/pdp-zoom/[^,|"']+?.(?:jpg|jpeg)

演示

你可以

使用这个正则表达式,

(https?)?:?//.*?pdp-zoom.*?.jpe?g(?=s|$)

仅当 URL 内部有 pdp-zoom并以 jpgjpeg 结尾时,它才会完全匹配 URL .

在这里,这个(?=s|$)展望确保URL完全匹配,而不是部分匹配,如下所示的较大字符串,

https://mosaic04.ztat.net/abcpdp-zoom/abc.jpg/BR711A017-Q11@4.jpg

如果我们不向前看,在正则表达式中,那么正则表达式将部分匹配并在上面的字符串上给出这个 URL,

https://mosaic04.ztat.net/abcpdp-zoom/abc.jpg

这是不正确的,因此需要向前看。

演示

最新更新