Este funciona para os casos de teste:
(?:ht|f)tps?://(?=[^/]*(?:myabcdomain|abcabcdomain|abcdomain(?:\.zendesk)?))(?!(?:\w+\.)?(?:myabcdomain|abcabcdomain|abcdomain(?:\.zendesk)?)\.com)\S+
Explicação:
(?:ht|f)tps?:// : protocol
(?= : positive lookahead, make sure we have after
[^/]* : 0 or more non slash
(?: : start non capture group
myabcdomain : literally
| : OR
abcabcdomain : literally
| : OR
abcdomain : literally
(?:\.zendesk)? : followed with optional
) : end group
) : end lookahead
(?! : negative lookahead, make sure we don't a=have after
(?:\w+\.)? : optional, 1 or more word character and a dot
(?: : start non capture group
myabcdomain : literally
| : OR
abcabcdomain : literally
| : OR
abcdomain : literally
(?:\.zendesk)? : followed with optional
) : end group
\.com : literally
) : end lookahead
\S+ : 1 or more any character that is not a space
Corresponde:
<a href="http://abcdomain.products.com.vbs">
<a href="https://abcdomainproducts.com">
<a href="http://products.abcdomain.products.net">
<a href="https://products.abcdomainproducts.com/test">
<a href="http://fakeabcdomain.products.com.vbs">
<a href="http://myabcdomain.products.com.vbs">
<a href="http://fakeabcdomain.com">
E não corresponde:
<a href="http://products.myabcdomain.com/help">
<a href="http://abcdomain.zendesk.com/help">
<a href="http://myabcdomain.com/help">
<a href="http://abcdomain.com/help">
<a href="http://products.abcabcdomain.com">