Encontrar ‘palavra’ não seguida por ‘@’

Qual é a expressão regular para procurar uma string de word que não seja seguida pelo símbolo @ ?

Por exemplo:

 mywordLLD OK myword.dff OK myword@ld Exclude 

A (?!@) Antecipação negativa é necessária aqui:

 word(?!@) 

Veja demo

Essa regex corresponde à subseqüência de word e (?!@) Garante que não haja @ logo após e, se estiver lá, a word não será retornada como uma correspondência (ou seja, a correspondência falhará ).

De Regular-expressions.info :

O lookahead negativo é indispensável se você quiser combinar algo não seguido por outra coisa. Ao explicar as classs de caracteres , este tutorial explicou por que você não pode usar uma class de caractere negada para corresponder a um q não seguido por um u . O lookahead negativo fornece a solução: q(?!u) . A construção lookahead negativa é o par de parênteses, com o parêntese de abertura seguido por um ponto de interrogação e um ponto de exclamação .

E na página de classs de personagem :

É importante lembrar que uma class de caractere negada ainda deve corresponder a um caractere. q[^u] não significa: ” q não seguido por u “. Isso significa: “um q seguido por um caractere que não é u “. Não corresponde ao q na cadeia Iraq . Corresponde ao q e ao espaço após o q no Iraque ser um país. De fato: o espaço torna-se parte da correspondência geral, porque é o “caractere que não é um u ” que é correspondido pela class de caractere negada no regexp acima. Se você quer que o regex corresponda ao q , e somente ao q , em ambas as strings, você precisa usar lookahead negativo : q(?!u) .