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.
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ę dziejeSpró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