LINUX.ORG.RU

Вопрос по реализации регулярных выражений

 


0

1

Во многих юникс программах, в реализациях re, не поддерживается ограничение жадного поиска. При этом, многие адепты утверждают, что это, якобы, не нужно. Если это не нужно, то нахрен тогда нужен жадный поиск, если всегда, по их словам, можно обойтись без него? А если все таки, нужен, то, получается следующая картина. Большинство реализаций основывается на механизме НКА. Соответственно, просадка производительности при жадном поиске будет прямо пропорциональна количеству символов в строке. Если же остались такие динозавры, которые используют исключительно ДКА(этого, кстати, как ни странно, требует POSIX, кстати почему?), то мы все равно, по идее, должны получить просадку производительности засчет увеличения времени компиляции + оверхед по памяти. Не проще ли запилить ограничение? Как объяснить этот парадокс?



Последнее исправление: theKingOfJava (всего исправлений: 3)

if all you have is a hammer, everything looks like a nail

Это я к тому, что часто RE совсем не нужны, но так же часто их пихают где можно и неможно.

beastie ★★★★★
()

Опять анонiмус?

Во многих юникс программах, в реализациях re, не поддерживается ограничение жадного поиска
Если это не нужно, то нахрен тогда нужен жадный поиск, если всегда, по их словам, можно обойтись без него?

Э... как из первого следует второе? Следовало бы спросить, зачем нужен нежадный поиск.

Не проще ли запилить ограничение?

В смысле? Ты хочешь разрешить делать квантификаторы нежадными, как во многих современных реализациях? Тогда тебе придётся запилить и жадный, и нежадный поиск. Или ты хочешь сказать юзеру, что, мол, во избежание просадки производительности жадность поиска будет жёстко ограничена? Тогда твоей реализацией никто пользоваться не будет, потому что кому нужна высокая производительность ценой очень труднопредсказуемого поведения, а может, и полной невозможности сделать некоторые вещи?

proud_anon ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.