Regex í gagnavinnu
Hvar reglulegar segðir nýtast í gagnavinnu: í SQL, eftir API-köll og við hreinsun gagna sem eru sköpuð af vefsíðum.
Regex er sjaldnast lokamarkmið. Það er verkfæri sem kemur að gagni þegar gögnin eru of óregluleg fyrir venjulega dálkavinnslu en samt nógu regluleg til að mynstur sjáist.
Í SQL
Í SQL byrjum við oft á einfaldari mynstraleit með LIKE:
SELECT *
FROM contacts
WHERE email LIKE '%@hi.is';LIKE er ekki full regex. Það notar bara tvo algildisstafi:
| Tákn | Merking í LIKE |
|---|---|
% |
hvaða texti sem er, líka enginn texti |
_ |
nákvæmlega einn stafur |
Þegar mynstrið verður flóknara þarf regex-stuðning gagnagrunnsins. Í PostgreSQL má til dæmis nota ~ til að prófa regex:
SELECT *
FROM contacts
WHERE phone ~ '^[0-9]{3}[- ]?[0-9]{4}$';Þetta finnur símanúmer sem eru annaðhvort 5551234, 555-1234 eða 555 1234.
PostgreSQL býður líka upp á föll eins og regexp_replace() til að hreinsa texta:
SELECT regexp_replace(phone, '^([0-9]{3})[- ]?([0-9]{4})$', '\1-\2') AS phone_clean
FROM contacts;Þá er regex ekki bara leit, heldur gagnahreinsun inni í gagnagrunninum.
LIKE er litla systkini regex
Í SQL-köflunum notum við LIKE til að kynna mynsturleit. Það er gott fyrsta skref, en það er ekki sama mál og regex. Þegar þú þarft valkosti, hópa, endurtekningar eða nákvæma sannprófun ferðu úr LIKE yfir í regex-aðgerðir gagnagrunnsins.
Eftir API-kall
Vefþjónusta skilar oft skipulögðum gögnum, til dæmis JSON. Þá áttu fyrst að nota JSON-parser og breyta svarinu í töflu. En reitirnir inni í töflunni geta samt verið sóðalegir:
"Hjarðarhagi 6, 107 Reykjavík"
"Sími: 525-4000"
"Uppfært 2026-08-24T13:45:00Z"
Þar getur regex hjálpað til við að draga út hluta:
\d{3}\s+[A-Za-zÁÉÍÓÚÝÞÆÖáéíóúýþæö]+
\d{3}[- ]?\d{4}
^\d{4}-\d{2}-\d{2}
Mikilvæga reglan er: notaðu skipulagða lesara fyrst, regex síðan. Ekki reyna að lesa JSON með regex ef þú getur notað JSON-lesara.
Þegar API er ekki til
Stundum er engin vefþjónusta í boði. Þá er freistandi að skrapa gögn af HTML-síðu. Þar gildir sama regla og áður: ef taflan er alvöru HTML-tafla, notaðu HTML-parser. Regex er samt gagnlegt við jaðarverk:
- finna hvort slóð lítur rétt út áður en hún er sótt,
- finna ákveðna línu eða merki í hráum texta,
- hreinsa bil, tíma eða aukatexta eftir að taflan hefur verið lesin,
- greina hálfskipulögð gögn sem koma ekki í hreinni töflu.
Til dæmis má finna hlaupahraða á sniðinu 04:25/km með:
\d{2}:\d{2}/km
og halda bara tímanum með hópi:
(\d{2}:\d{2})/km
Regex getur hjálpað við skrap, en HTML er tré, ekki línulegur texti. Ef þú reynir að lesa heila HTML-síðu með einni stórri reglulegri segð verður mynstrið bæði brothætt og illlæsilegt. Notaðu HTML-parser til að finna töflur og reiti, og regex til að hreinsa textann sem kemur út.