我的正则表达式需要一些帮助。
Haystack 是整个页面的源代码。我正在寻找末尾有 jpg 和 jpeg 且中间有
pdp-zoom
的链接。
这样的链接:
https://mosaic04.ztat.net/vgs/media/packshot/pdp-zoom/BR/71/1A/01/7Q/11/[email protected]
或者这个:
//mosaic04.ztat.net/vgs/media/packshot/pdp-zoom/BR/71/1A/01/7Q/11/[email protected]
我有:
(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
您可以使用这个正则表达式,
(https?)?:?\/\/.*?pdp-zoom.*?\.jpe?g(?=\s|$)
仅当 URL 内部包含
pdp-zoom
且以 jpg
或 jpeg
结尾时,才会完全匹配 URL。
这里的
(?=\s|$)
前瞻可确保 URL 完全匹配,而不是像这样的较大字符串中的部分匹配,
https://mosaic04.ztat.net/abcpdp-zoom/abc.jpg/[电子邮件受保护]
如果我们不在正则表达式中放置前瞻,则正则表达式将部分匹配并在上面的字符串中给出此 URL,
https://mosaic04.ztat.net/abcpdp-zoom/abc.jpg
这是不正确的,因此需要向前看。