у меня есть это правило preg_match:
preg_match( '#(http:\/\/(www.)?imgur.com)\/(gallery\/)?(([-|~_0-9A-Za-z]+)&?.*?)#i', $link, $matches )
это совпадение для
http://imgur.com/xxxx http://www.imgur.com/xxxx http://imgur.com/gallery/xxxx
как мне избежать совпадения с imgur.com/a/xxxx#xxxx?
imgur.com/a/xxxx#xxxx
Я не уверен, что это то, что вы хотите:
preg_match( '#(http:\/\/(www.)?imgur.com)\/(?!a)(gallery\/)?(([-|~_0-9A-Za-z]+)&?.*?)#i', $link, $matches )
С этим URL, как http://imgur.com/a/xxxxxx не будет соответствовать.
http://imgur.com/a/xxxxxx
PS: Хотя в зависимости от того, что вы делаетеЯ думаю, что регулярное выражение может стать излишне сложным, и вы должны попытаться найти более простые методы.Посмотрите на мой ответ здесь относительно парсинга URL: Будет ли регулярное выражение лучше для этой проблемы?
Вы можете обнаружить URL-адреса и затем передать их на parse_url(), где вы можете удалить их из своих совпадений, если они содержат этот путь.
parse_url()
Наверное, будет легче читать:)