我需要一点正则表达式的帮助。
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
并以 jpg
或 jpeg
结尾时,它才会完全匹配 URL .
在这里,这个(?=s|$)
展望确保URL完全匹配,而不是部分匹配,如下所示的较大字符串,
https://mosaic04.ztat.net/abcpdp-zoom/abc.jpg/BR711A017-Q11@4.jpg
如果我们不向前看,在正则表达式中,那么正则表达式将部分匹配并在上面的字符串上给出这个 URL,
https://mosaic04.ztat.net/abcpdp-zoom/abc.jpg
这是不正确的,因此需要向前看。
演示