Consulta Regex para localizar hiperlinks com marca incorreta

0

Estou tentando executar um comando regex para analisar os e-mails recebidos para identificar quaisquer hiperlinks enviados por sites phony / phishing que tentam usar uma variação do nome da empresa. Nossa empresa é abcdomain. O critério é:

  1. Localize todos os hiperlinks (parte do nome do host) que contenham o nome da nossa empresa 'abcdomain'
  2. Exclua todos os domínios que registramos, ou seja, myabcdomain.com, site.abcdomain.com, abcdomain.net, etc.)

Meu regex não é bem formado e não funciona sob algumas variações. O problema está provavelmente relacionado à maneira como eu excluo. No início, eu estava realmente tentando excluir 'abcdomain.com', mas o regex não parecia funcionar dessa maneira.

  • Consulta: (http[s]?|ftp)\S*?(abcdomain|myabcdomain)(?!\.com)
  • String: http://www.abcdomain.com/logo/email/abcdomain-email-logo.png
  • Resultado: isso deve ser excluído , mas a consulta é acessada no segundo abcdomain

  • Consulta: (http[s]?|ftp):\/\/([\dA-Za-z\.]*)(abcdomain|myabcdomain)(?!.com|..net)

  • String: http://www.fakeabcdomain.com
  • Resultado: isso deve ser incluído , mas minha exclusão só cuida do resultado da hit)
por David Rubino 13.08.2018 / 05:01

1 resposta

0

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">
    
por 13.08.2018 / 11:20

Tags