TGViewer
There will be no singularity There will be no singularity @nosingularity · 1.95K subscribers
Post #433 457
​Как-то давно (лет 5 назад), досталась мне база одного билетного агенства, которую надо было привести в порядок.

Но проблема лежала не в плоскости архитектуры, а в плоскости контента.

На одно и то же мероприятие билеты продают разные ресселеры. Одни и те же места у них называются по-разному и стоят по разному. На фестивали билеты могут быть описаны как «вип на первый день с парковкой в крыле b, на остальные без парковки». Есть опечатки.

Группировки ни по событиям, ни по продавцам не было.

Каких-то понятных ML инструментов тогда не было, поэтому я запасся энергетиком и загнал все в postgres.

За неделю я отнормализовал процентов 80 контента.

Пофиксил опечатки (выбираются самые популярные слова, самые редкие, считается
расстояние Левенштейна, для редких слов с ld меньше 3 делается замена на частые).

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

Узнал много нового о делении концертных площадок на куски, их названия и ценообразование.

Что могу сказать... FTS (full text search) у postgres отличный :)
Но его мне все-равно не хватило.

Пришлось написать около 200 regexp’ов, которые парсили всю базу для подготовки текста под FTS.
Возможно, не последнюю роль тут сыграли 4 банки энергетика в день, но где-то на 150 regexp’е мне показалось, что я могу видеть время...

Причем до этого момента я был с regexp’ами на ВЫ. Я знал, что на regexp разговаривают перловики, и один знакомый сисадмин.
Все мои эксперименты выглядели как копипаста с http://php.spb.ru/php/regexp.html (алярм, БИТАЯ КОДИРОВКА!) с небольшими правками.

Это сейчас все знают про regex101.com, а тогда никто не знал :)

Короче, с того момента я regexp не боюсь :) Ими очень удобно парсить всякое, в том числе прям в IDE. Все IDE поддерживают поиск с regexp.

Есть, конечно, совершенно неподходящее приложение этого инструмента - например, парсинг сорцов. Вот знаменитый топик на SO про парсинг html:

https://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags

Сорцы парсят совершенно другим способом. За час можно разобраться с этим проектом? там все максимально понятно, даже если js не ваш родной язык:

https://github.com/jamiebuilds/the-super-tiny-compiler

Но в моем анализаторе все-равно нашлось место регуляркам. С их помощью я очищаю DDL от команд, которые есть в psql, но которые не понимает AST-парсер.

Поэтому анализатору можно скармливать файлы с многострочными каментами и с коммандами вида
\c dbname

Но я, собственно, чего начал то...

Show HN принес такой проект:
RegEx for Regular Folk

https://refrf.shreyasminocha.me/

Все доступным языком, с хорошими примерами.

Btw, вы видели полный regexp валидатор для email?

https://stackoverflow.com/questions/20771794/mailrfc822address-regex

PS: хотел было изобрести reactions с regexp, так этот бот не пропустит :(
More from @nosingularity
  1. Sep 19, 2026fixupx.com/KaiLentit/status/2100629518784328013/video/1
  2. Sep 18, 2026fixupx.com/iam_zachi/status/2100679300756435135
  3. Aug 30, 2026photo post
  4. Aug 25, 2026fixupx.com/meganreyno/status/2091918430374957416
  5. Aug 3, 2026Вышла новость, что Andy Pavlo приняли на борт Clickhouse Inc. Энди довольно известная фигу…
  6. Jul 23, 2026fixupx.com/unclebobmartin/status/2080257779395154409
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →