Como o conceito Look-ahead e Look-behind suporta esse conceito de Assertivas de Zero-Largura no Regex de Ruby?

Eu acabei de passar pelo conceitoZero-Width Assertions da documentação. E algumas perguntas rápidas vêm em minha mente

porque tal nomeZero-Width Assertions?ComoLook-ahead elook-behind conceito suporta taisZero-Width Assertions conceito?Que tais?<=s,<!s,=s,<=s - 4 símbolos estão instruindo dentro do padrão? você pode me ajudar aqui a se concentrar para entender o que realmente está acontecendo

Eu também tentei alguns códigos minúsculos para entender a lógica, mas não muito confiante com a saída daqueles:

irb(main):001:0> "foresight".sub(/(?!s)ight/, 'ee')
=> "foresee"
irb(main):002:0> "foresight".sub(/(?=s)ight/, 'ee')
=> "foresight"
irb(main):003:0> "foresight".sub(/(?<=s)ight/, 'ee')
=> "foresee"
irb(main):004:0> "foresight".sub(/(?<!s)ight/, 'ee')
=> "foresight"

Alguém pode me ajudar aqui a entender?

EDITAR

Aqui eu tentei dois trechos um com conceitos "Assertivas de Largura Zero" como abaixo:

irb(main):002:0> "foresight".sub(/(?!s)ight/, 'ee')
=> "foresee"

e o outro é sem os conceitos de "Asserções de Largura Zero" como abaixo:

irb(main):003:0> "foresight".sub(/ight/, 'ee')
=> "foresee"

Ambos acima produz a mesma saída, agora internamente como ambosregexp movimento por conta própria para produzir saída- você poderia me ajudar a visualizar?

obrigado

questionAnswers(3)

yourAnswerToTheQuestion