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
Zero-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á acontecendoEu 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