Как стать автором
Обновить
26
0
Vitaly Kalinkin @Lattyf

Software Engineer

Отправить сообщение
Если вы напишите код на SQL так, что вас не будет интересовать КАК он выполяется — вы далеко не уедете. Я согласен, что не должно быть очевидно. И я согласен, что надо писать ЧТО нас интересует, а не как. Но при этом надо обязательно знать КАК это работает внутри. Иначе можно получить «странные и непонятные» баги, проблемы с производительностью, продолжить по вкусу.
Я ставил цель показать почему кеш на самом деле один на всю программу. Если вы напишите то же самое на C# он будет новый каждый раз, если вы конечно не примените похожую схему, засунув его в замыкание и позаботившись чтобы оно использовалось каждый раз.

Я не думаю что это очевидно с первого взгляда, особенно когда смотришь на весь этот синтаксис F# :)
Поддерживаю, книга написана очень интересно. Пока пишу статью заодно проверяю насколько я помню то, что когда-то прочитал :)
Тогда будет работать, но только без вложенных скобок. Поиск для второй строки будет опять неправильный, поскольку через регэксп в общем случае нельзя задать произвольную глубину проверки сбалансированности скобок. Только до какой-то заранее заданной. Причем для глубины 2 будет уже приличное выражение, которое даже автор не сходу поймет.
Да, Вы правы, это экранирование, escaping.
Тоже с месяц назад перешел на темную сторону. Глаза правда намного меньше устают, хотя по началу было непривычно.
Выше уже пояснили, но хочу лобавить, что как раз один из тех терминов, для которого все переводы для непосвященного не очевидны.
Когда я первый раз увидел перевод «экранировать» тоже не смог сразу найти.
Забыли заматчить «не раму». Negative lookahead совпадает (правильно, конечно, «не совпадает», то так можно мозг сломать) с позицией, а не подвыражением, соответственно захватится только «Мама мыла » в строке «Мама мыла Ваню».
Гуглите в сторону «negative lookahead» (как в примере Terion), либо «negative lookbehind» (как в моем) для своего языка. Обычно синтаксис этой части совпадает.
Парсер наставил пробелов, но общий смысл должен быть понятен.
У меня в Notepad++ для выражения [A-Я] не совпадает буква «Р». Вот такие вот фокусы.
Причем перевод тоже очень хорош.
Можно использовать поисковые конструкции чтобы исключить совпадение рамы.

Что-то типа ^Мама мыла (\w+)(?<! раму)$. Вторая часть (?! раму) говорит что в этой позиции подвыражение не должно совпадать назад (то что уже захватили в \w+). Но опять же надо понимать, что текст должен совпадать с НЕ рамой. В данном случае это не критично, потому что с \w идет квантификатор +, который требует хотя бы одной этой самой \w. Если бы стояла *, то были бы отличия в поведении.
Да, вы правы, поэтому я и начал с диалектов. Каждый раз надо смотреть как то сделано в конкретном языке или утилите.
Конечно, я это и имел в виду, глупо парсить регэкспами TCP пакеты.
Да, я хочу об этом написать в следующих статьях подробно.
Вот именно поэтому я написал эту статью :)
Да, конечно интересно, отправляйте.
А в них нет ничего страшного :)
Если дойдут руки, то хочу поверхностно описать как устроены эти самые регэкспы внутри. Очень важно для понимания регэкспов в целом.
Hint: А Вам интересно переводить с русского на русский? ;)
12 ...
7

Информация

В рейтинге
Не участвует
Откуда
London, England - London, Великобритания
Зарегистрирован
Активность