Search
Write a publication
Pull to refresh
26
0
Vitaly Kalinkin @Lattyf

Software Engineer

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

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

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

Information

Rating
Does not participate
Location
London, England - London, Великобритания
Registered
Activity