LINUX.ORG.RU

Нужны вменяемые юзкейсы регеспов.

 , , ,


0

2

Предыстория, типа(можнонечитать):

Вобщем я тут о5 лежал на боку и какой-то питух со мною начал спорить про недоязычки, кидая какую-то херню с бенчгеймов, аля регесп-бенчмарк. Начал нести херню про какой-то в8 и быстрые там регеспы и типа быстрые они, ибо жабаскрипт такой крутой и там есть жит и вся херня.

Я конечно не буду обижаться на эту обезьяну, ибо код она читать не умеет и пойти поглядеть сырец в8 и узреть, что для регеспов там отдельный жит она не может, да и вообще регеспы в8 никакого отношения к жабаскрипту не имеют. Какбэ это банальная и примитивная хрень, которую понимает любой вменяемый пацан.

Какбэ скомпилить эти регеспы руками и обоссать в 2-5раз эти говнобенчи слишком просто, да и пацан съедет и серанёт.

Ну и вот у меня появилось тут пару недель, ибо лежать на боку стало лень и я решил что-то запилить. Я уже создавал тему, но вменяемого пацаны мне так и не посоветовали.

Ну и вот решил я пилить свой жит царский и илитный.

Суть:

Мне нужно мнение экспертов - какие фичи нужны, какие не нужны и почему и какую разновидность этого говна вообще надо пилить и где можно найти внятную спецификацию не на 300страниц неведомой херни.

Либо ещё проще - какие фичи нужны именно вам.

P.S. И да, не обижайте Царя - царь решил сделать пабликпрожектнужныйбабуинам. Тема не для срача, а то я о5 всё свою время просру на срач на лоре.



Последнее исправление: a1batross (всего исправлений: 1)
Ответ на: комментарий от emulek

Ты не понял. Просто прогоняешь код через препроцессор, он раскрывает наш код в обычный, который ты и скармливаешь обычному компилятору. Дальше все как обычно. Просто еше одна стадия перезаписи. ЕМНИП, твои плюсы именно так и работают, например. Они раскрывают свойт гребаный стрем в обычную сишечку.

anonymous
()
Ответ на: комментарий от TrueTsar1C

что-то за гранью дефолтных в грепе регулярок не могу.

PCRE могут работать в 10000(sic!) раз медленнее обычных. Ты может и не можешь, а пхп обезьяны обожают понтануться своими «глубокими знаниями».

emulek ★
()
Ответ на: комментарий от emulek

не буду я бредни диванного теоретика читать. Приведи конкретный код. Никто не спорит, что в PRCE есть медленные конструкции, как и везде. Только предполагается, что человек который ими пользуется, знает что делает. А если мы говорим про мартышек, то им ничего кроме ДКА доверять нельзя, да.

anonymous
()
Ответ на: комментарий от anonymous

Ну, раньше так было, щас, наверное перепилили.

«раньше» это в восьмидесятых?

emulek ★
()
Ответ на: комментарий от anonymous

не буду я бредни диванного теоретика читать. Приведи конкретный код.

до конца дочитай, там есть конкретный код, и временные замеры.

Никто не спорит, что в PRCE есть медленные конструкции, как и везде.

ты совсем альтернативно одарённый? Можешь понять, что NFA выполняется ЗА ОДИН ПРОХОД? А PCRE — как повезёт. Причём цена прохода сопоставима, у NFA даже меньше.

А если мы говорим про мартышек

а где других кодеров брать?

Открой исхоник любой HEX на пхп, увидишь там PCRE, тысячи их. И там в них ВСЁ есть, даже eval в regex'пе. Ну и дырявые они все, как РЕШЕТО.

emulek ★
()
Ответ на: комментарий от emulek

Открой исхоник любой HEX на пхп, увидишь там PCRE, тысячи их. И там в них ВСЁ есть, даже eval в regex'пе. Ну и дырявые они все, как РЕШЕТО.

В этом и проблема - я как глянул на эту парашу чуть не блюванул. Ответь хоть ты мне, эмулек, нужны ли pcre или это параша для обезьян бесполезная? Я не могу придумать им применение.

TrueTsar1C
() автор топика
Ответ на: комментарий от emulek

Можешь понять, что NFA выполняется ЗА ОДИН ПРОХОД?

Он не может выполниться за один проход, хотя бы потому, что там есть обратные ссылки.

anonymous
()
Ответ на: комментарий от TrueTsar1C

ли pcre или это параша для обезьян бесполезная? Я не могу придумать им применение.

на самом деле, PCRE(и простые RE) — специальный ЯП. Т.е. в них самих нет ничего плохого. Проблема в обезьянах сующих их туда, где они не нужны. А нужны они очень редко. Я регулярок Over9000 написал, здесь они тоже есть.

emulek ★
()
Ответ на: комментарий от emulek

Проблема в обезьянах сующих их туда, где они не нужны.

По моим наблюдениям, обезьяны, как правило их либо вообще не знают, либо знают очень хреново, и пишут тонны ненужного кода, циклов, рекурсивных вызовов и тд, там, где можно было бы обойтись одной регуляркой. И при этом дежурный отмаз — скорость. Что касается скорости, легко можно протестировать скорость выполнения регулярки, мне еще ни разу не встречался случай, когда из-за регулярок были бы реальные проблемы со скоростью. Скорей наоборот.

anonymous
()
Ответ на: комментарий от anonymous

Он не может выполниться за один проход, хотя бы потому, что там есть обратные ссылки.

ага, тут есть один поциент с такой же логикой, как у тебя:

1. Я тупой, и не знаю, как сверлят дырки в камнях и как тяжёлые камни подымают.

2. Но я хоть и тупой, но видел дрель и подъёмный кран

3. пирамиды с дырками в камнях существуют

4. из этих трёх фактов следует, что прилетали инопланетяне, и сверлили в камнях дырки дрёлью и камни поднимали краном.

Ваша ошибка в пункте №1, вы тупые и не понимаете. Само по себе это не страшно, страшно, что вы не хотите знать.

Мне нагуглить для тебя особенности реализации обратных ссылок? Или сам? Или продолжишь уподобляться альтернативно одарённым?

emulek ★
()
Ответ на: комментарий от anonymous

Это потому что ты тупой.

не настолько. Если у тебя есть годные примеры, прошу в студию. А я попробую решить ту же задачу обычной regex. Если я не осилю, то скорее всего решение проблемы найдено.

emulek ★
()
Ответ на: комментарий от emulek

Давай хоть ты помоги мне решить делему.

Есть http://benchmarksgame.alioth.debian.org/u32/performance.php?test=regexdna - надо смешать с говнецом. Суть в том, что смешать с говнецом раз в 10 их можно за 2минуты скомпилив руками регеспы, аля: http://pastebin.com/HFuLbiuB.

Это может сделать любая С/С++ обезьяна. Суть в том, что даже эта реализация говно - можно сделать ещё в 10раз быстрее, ну и заодно сделать вменяемый конпелятор, чтобы какбэ было честно. Но глянув на pcre я аринел от обилия бесполезного говнища в них напиханного.

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

TrueTsar1C
() автор топика
Ответ на: комментарий от emulek

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

zolden ★★★★★
()
Ответ на: комментарий от anonymous

По моим наблюдениям, обезьяны, как правило их либо вообще не знают, либо знают очень хреново

за то у них есть гугл, даже «калькулятор регекспов» существует для совсем тупых. Сам догадаешься, сколько ненужного говна вставляет эта программа?

пишут тонны ненужного кода, циклов, рекурсивных вызовов и тд, там, где можно было бы обойтись одной регуляркой. И при этом дежурный отмаз — скорость.

правильное решение обычно одно, неправильных бесконечное множество.

Что касается скорости, легко можно протестировать скорость выполнения регулярки, мне еще ни разу не встречался случай, когда из-за регулярок были бы реальные проблемы со скоростью. Скорей наоборот.

повторить ссылку? Конечно реальные проблемы с рандомным текстом маловероятны, а если специально создать проблему?

emulek ★
()
Ответ на: комментарий от emulek

Ты, для начала, поясни, что ты подразумеваешь под «выполнением за один проход», умник. Есть подозрение, что ты слабо представляешь, о чем ты говоришь.

anonymous
()
Ответ на: комментарий от TrueTsar1C

Сам забенчишь

А мне-то это зачем?

я просто сделаю вид, что не заметил

Да мне пофиг что ты будешь делать, клоун

твой высер?

Хочешь увидеть высер - посмотри в зеркало

anonymous
()
Ответ на: комментарий от emulek

А я попробую решить ту же задачу обычной regex.

Ну давай начнем с простенького. Выпарси текст, с начала строки до end или **(двойной звездочки)


str1="foo bar *** **** ** +++ *** ===="
str2="foo bar end *** **** ** +++ *** ===="

re=/((?!end| \*{2} ).)+/

str1.match(re)[0].show() //  foo bar *** ****
str2.match(re)[0].show() //  foo bar 

anonymous
()
Ответ на: комментарий от emulek

что NFA выполняется ЗА ОДИН ПРОХОД

Ты ничего не путаешь? PCRE реализовано преимущественно на механизме NFA, с небольшими компилтайм плюшками. При этом:

Ключевой особенностью НКА являются «возвраты». От их количества напрямую зависит скорость поиска.

То есть возвраты как-бы не мешают ему быть «однопроходным» по-твоему? Что ты тут вообще за ахинею несешь?

anonymous
()
Ответ на: комментарий от anonymous

Ололо. Ты ж так и не осилил рассказать, где и как твои регёкспы нужны. А знаешь, почему? Потому, что они не нужны вообще, совсем, полностью.

anonymous
()
Ответ на: комментарий от zenden

А пацаны-то не знали. Я ещё в первом посте об этом написал, только компилятся они в говно и работают как говно.

Суть задачи - сведение регеспов в банальный поиск подстроки/чаркласса. Как оптимизация частного случая для текущих реализаций. Эти автоматные реализации для таких случаев убогая и бесполезная параша.

А 95% регеспов, которые я смог придумать сводятся к банальному поиску подстроки/набора диапазонов символов. Вот и я и спрашиваю, авось пацаны ещё что-то подкинут, что я упустил.

TrueTsar1C
() автор топика
Ответ на: комментарий от TheKnight

О боже, я конечно знал, что жабисты аутисты, но чтобы мерить в каких-то «строках в секунду», вместо вменяемых байт - это сильно.

Очень спорно. Обычно любые манипуляции с памятью работают медленнее чем арифметические операции.

О да, я знал конечно, что аудитория хабра - это недалёкие и недобитые нулёвые мрази, но чтоб настолько.

Ну и да, это оптимизация уровня детсада, да и регулярки для это задачи нахрен не упали.

TrueTsar1C
() автор топика

Тебе мама опять таблеток не дала?

anonymous
()
Ответ на: комментарий от TrueTsar1C

Учитывая, что все остальное, кроме ника — чистейшей воды унылый тупняк — не смог.

anonymous
()
Ответ на: комментарий от TheKnight

Почитал. Ничего интересного, обычные стенания маздайщика, пытающегося методом тыка сделать что-то похожее на оптимизацию. Аффтору матчасть изучить нужно, и может лет через пять из него выйдет толк.

emulek ★
()

автоматизация в интерактивном шелле и быстроскрипитах

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