Објашњено Питхон Регек (2026)
Регек је најстрашнија карактеристика Пајтона. Није тако тешко — али 80% туторијала унапред учи теорију (\д, \в, похлепан против лењ) пре него што вам покаже један образац који бисте заправо користили у стварном коду. Овај водич то преокреће.
Покрићемо: основе модула ре, пет образаца који покривају 90% стварног рада, када ре.цомпиле заправо помаже, именоване групе у односу на нумерисане, и четири случаја у којима је регек ПОГРЕШНА алатка.
Модул за 60 секунди
Све живи у стдлиб ре модулу. Три функције покривају већину потреба:
Правило: користите ре.сеарцх када сте у недоумици. ре.матцх само проверава почетак; заборављајући то доводи до "мој регуларни израз се не поклапа!" 30 минута изгубљено.
Необрађене жице — увек их користите
р"..." префикс онемогућава тумачење обрнуте косе црте. Без тога, "\д" постаје "\\д" у Питхон-у, што механизам регуларних израза види као \д — исти резултат, али само случајно и само за \д. "\н" у редовном изразу је нови ред, а не два знака ` + н`.
Мишићно памћење: сваки литерал регуларног израза почиње са р. Без изузетака.
5 образаца који покривају 90% стварног посла
1. Издвоји све целе бројеве из текста
Напомена 199,99 се дели на ['199', '99'] — \д+ не прелази тачку. Користите р"\д+(?:\.\д+)?" за опционе децимале:
2. Нормализујте размак
\с+ се подудара са било којим низом размака / табулатора / нових редова. Замените једним размаком, скините ивице. Ово је Питхонов одговор на `сед -Е 'с/[[:спаце:]]+/ /г''.
3. Извуците име хоста из УРЛ-а
Заграде стварају групу за снимање; .гроуп(1) враћа свој садржај. [^/:]+ = "један или више знакова који нису / или :" — зауставља се на сепаратору портова ИЛИ путањи.
За рашчлањивање производног УРЛ-а користите урллиб.парсе.урлпарсе (рукује ивичне случајеве као што су усеринфо + ИПв6). Регек је за брзу и прљаву екстракцију.
4. Лабава провера е-поште
НЕМА редовног израза који у потпуности потврђује мејлове према РФЦ 5322. Свако ко вам каже другачије нешто продаје. Али ова хвата 99% правих адреса без лажног одбијања добрих:
Сидра (^ и $) форсирају подударање целог низа. Без њих, "фоо@бар" унутар веће реченице би одговарао.
Производња: пошаљите е-поруку за потврду. То је ЈЕДИНИ поуздани валидатор е-поште.
5. Именоване групе снимања
Нумерисане групе ((...) + .гроуп(1)) су у реду за 2-3 снимања. Осим тога, имена побеђују:
.гроупдицт() враћа дикт за све именоване групе. Додајте / промените редослед група без прекидања сваке позивне локације која се односила на .гроуп(3).
ре.цомпиле — када заправо помаже
стдлиб одржава мали кеш компајлираног узорка (подразумевана величина 512), тако да су једнократни позиви ре.сеарцх(паттерн, тект) ефективно бесплатни након првог поготка. ре.цомпиле експлицитно помаже када:
1. Узорак се користи унутар уске петље (милиони шибица).
2. Желите да сачувате образац као константу на нивоу модула за греп-способност.
3. Потребни су вам .финдитер(), .паттерн, .флагс на компајлираном објекту.
Немојте превише компајлирати. Сваки ре.цомпиле на нивоу модула додаје мале трошкове увоза.
Заједничке заставе
Комбинујте са |: ре.ИГНОРЕЦАСЕ | ре.МУЛТИЛИНЕ.
Када је регек ПОГРЕШАН алат
1. Парсинг ХТМЛ / КСМЛ → користите прави парсер
Класичан одговор на преливање стека за ово је стар 20 година и још увек је истинит.
2. Парсинг ЈСОН → користи јсон
Модул јсон обрађује угнежђене наводнике, излазне знакове, Уницоде и сваки рубни случај РФЦ 8259. ЈСОН за рашчлањивање регуларних израза је сигнал против шаблона.
3. Рашчлањивање датума → користите датеутил или датетиме.стрптиме
датеутил.парсер.парсе("2026-07-30") прихвата сваки формат који човек може да унесе. датетиме.стрптиме ефикасно рукује познатим форматима. Оба обрађују временске зоне. Регек би морао све то поново измислити.
4. Угнежђени / рекурзивни обрасци → користите генератор парсера
Подударне заграде, угнежђени ЈСОН, уравнотежени изрази су формално изван моћи редовног израза (територија граматике без контекста). Користите пипарсинг / ларк / АНТЛР — или само прошетајте низ малим парсером.
Отклањање грешака у редовном изразу
Користите регек101.цом (изаберите „Питхон“ укус). Налепите шаблон + пример текста; истиче утакмице у реалном времену, објашњава сваки метазнак и приказује именоване групе. Најбржи начин да интуитивно научите регуларни израз.
За отклањање грешака на нивоу кода, ре.ДЕБУГ штампа преведену машину стања:
Вежбајте
Напишите регуларни израз за сваки. Решења испод.
1. Извуците број верзије из "Питхон 3.13.2 (главни, 15. јануар 2026, 10:32:11)" — требало би да врати "3.13.2".
2. Поделите "јабука, банана; трешња наранџа" на било који граничник (,, ; или размак).
3. Препишите фоо.бар_баз-123 као ФОО.БАР_БАЗ-123 (само велика слова, оставите цифре и интерпункцију).
Решења:
Регек је супермоћ када прођете првих 10 образаца. Трик је у томе да изградите мишићну меморију на пет горе наведених — они покривају 90% стварног посла. Посегните за правим парсером у тренутку када нађете да пишете повратне референце за балансиране заграде.
Следећи корак: регек + лекције за обраду текста у нумери Аутоматизација — вежбајте на датотекама евиденције, ЦСВ подацима и задацима веб-стругања са правим Питхон-ом који ради у вашем прегледачу.