PHP Regex help - поиск строки в середине регулярного выражения - PullRequest
0 голосов
/ 07 января 2019

Мне нужно немного помочь с моим регулярным выражением.

Стог сена - это исходный код всей страницы. Я ищу ссылки, которые имеют 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.

Ответы [ 3 ]

0 голосов
/ 07 января 2019

Используйте это:

(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

Демо

0 голосов
/ 07 января 2019

Вы можете использовать это регулярное выражение,

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

, который будет полностью соответствовать URL, только если он содержит pdp-zoom внутри и заканчивается либо jpg, либо jpeg.

Вот этот (?=\s|$) прогноз обеспечивает полное совпадение URL-адреса, а не частично в виде более крупной строки, такой как

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

Если в регулярном выражении мы не будем смотреть вперед, то регулярное выражение будет частично совпадать и даст этот URL в приведенной выше строке,

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

Что неверно и, следовательно, необходимость смотреть в будущее.

Демо

0 голосов
/ 07 января 2019

Попробуйте Regex: (?:http(?:s)?:)?\/\/[^,|"\']+?\/pdp-zoom\/[^,|"\']+?\.(?:jpg|jpeg)

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...