/ / Negando strings em expressões regulares Ruby - ruby, regex

Negando strings em expressões regulares Ruby - ruby, regex

Eu estou procurando uma maneira de extrair as páginas de perfil do LinkedIn de listas de URLs usando Ruby. Atualmente eu estou loop sobre as URLs e combinando-as contra este regex:

/^http://.+.linkedin.com/(pub|in)/

No entanto, os URLs das páginas do diretório de perfil do LinkedIn são os seguintes:

http://www.linkedin.com/pub/dir

, por isso estou procurando evitar links que tenham ocaminho pub / dir neles. Eu sei que é possível negar classes de caracteres em expressões regulares de Ruby, como [^ abc] combinando com qualquer caractere que não seja abc. Existe uma maneira de fazer o mesmo com as cordas? Ou seja combinando qualquer sequência de caracteres além de "dir"?

Respostas:

7 para resposta № 1

Você pode usar um lookahead negativo. Algo como

(pub(?!/dir)|in)