W jaki sposób koncepcja Look-ahead i Look-behind wspiera taką koncepcję Zero-Width Assertions w Regex of Ruby?

Właśnie przeszedłem przez koncepcjęZero-Width Assertions z dokumentacji. I kilka szybkich pytań przychodzi mi do głowy.

dlaczego takie imięZero-Width Assertions?JakLook-ahead ilook-behind koncepcja wspiera takieZero-Width Assertions pojęcie?Co takiego?<=s,<!s,=s,<=s - 4 symbole instruują wewnątrz wzoru? czy możesz mi pomóc tutaj skupić się na zrozumieniu tego, co naprawdę się dzieje

Spróbowałem też kilku drobnych kodów, aby zrozumieć logikę, ale nie tak pewnie z wynikami tych:

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"

Czy ktoś może mi pomóc tutaj zrozumieć?

EDYTOWAĆ

Tutaj wypróbowałem dwa fragmenty jeden z pojęciami „Zerowe potwierdzenia asercji”, jak poniżej:

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

a drugi nie zawiera pojęć „Zerowe potwierdzenia asercji”, jak poniżej:

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

Oba powyższe generują te same dane wyjściowe, teraz wewnętrznie, jak obaregexp poruszajcie się sami, aby wyprodukować wyjście - czy możecie mi pomóc w wizualizacji?

Dzięki

questionAnswers(3)

yourAnswerToTheQuestion