Säännölliset lausekkeet (regex) ovat tehokkaita kaavoja tekstin etsimiseen, vastaavuuksien löytämiseen ja poimintaan. Niitä käytetään ohjelmoinnissa, tietojen validoinnissa, haku-korvaus-toiminnoissa ja lokien analysoinnissa. Haasteena on, että regex-syntaksi voi olla hankala saada oikein. Ilmainen Regex-testausohjelma antaa sinun kokeilla reaaliajassa, joten näet tarkalleen, mitä kaavasi vastaa.
Mitä tarvitset
- Kaava, jota haluat testata, tai tekstinvastaavuusongelma ratkaistavaksi
- Verkkoselain (Chrome, Firefox, Safari tai Edge)
- Ei tiliä eikä asennusta tarvita
Vaiheittainen opas
Avaa Regex-testausohjelma
Siirry Regex-testausohjelma-sivulle. Näet kaksi pääaluetta: yhden säännölliselle lausekekaavallesi ja toisen testitekstiä varten, johon haluat verrata.
Kirjoita regex-kaavasi
Syötä säännöllinen lauseke kaavakenttään. Aloita yksinkertaisesti ja rakenna monimutkaisuutta vähitellen. Esimerkiksi aloita kirjaimellisella sanalla, kuten hello, vastaavuuden löytämiseksi tälle tarkalle tekstille, ja jalosta sitten kaavaasi erikoismerkeillä laajempien kaavojen löytämiseksi.
Syötä testitekstiä
Liitä tai kirjoita esimerkkiteksti testialueelle. Sisällytä esimerkkejä, joiden pitäisi vastata, ja esimerkkejä, joiden ei pitäisi. Työkalu korostaa kaikki vastaavuudet reaaliajassa kirjoittaessasi, joten näet välittömästi, toimiiko kaavasi oikein.
Tarkenna ja varmista
Säädä kaavaasi ja katso vastaavuuksien päivittyvän välittömästi. Lisää reunatapauksia testitekstiisi — epätavallisia syötteitä, rajaehtojen tapauksia ja hankalat muodot — varmistaaksesi, että regex käsittelee ne asianmukaisesti. Kun olet tyytyväinen, kopioi kaava koodiisi tai työkaluusi.
Hyvä tietää Regex-testausohjelma toimii kokonaan selaimessasi. Mitään tietoja ei lähetetä palvelimelle, joten voit turvallisesti testata kaavoja arkaluonteisia tekstejä, kuten sähköpostiosoitteita, lokitiedostoja tai henkilötietoja vastaan.
Olennainen regex-syntaksi
| Symboli | Merkitys | Esimerkki |
|---|---|---|
. |
Mikä tahansa yksittäinen merkki | h.t vastaa "hat", "hit", "hot" |
* |
Nolla tai enemmän edellisestä | ab*c vastaa "ac", "abc", "abbc" |
+ |
Yksi tai enemmän edellisestä | ab+c vastaa "abc", "abbc" mutta ei "ac" |
? |
Nolla tai yksi edellisestä | colou?r vastaa "color" ja "colour" |
\d |
Mikä tahansa numero (0-9) | \d{3} vastaa "123", "456" |
\w |
Mikä tahansa sananmerkki | \w+ vastaa "hello", "test123" |
\s |
Mikä tahansa välilyönti | hello\sworld vastaa "hello world" |
^ |
Merkkijonon alku | ^Hello vastaa "Hello world" |
$ |
Merkkijonon loppu | world$ vastaa "Hello world" |
[abc] |
Mikä tahansa joukossa oleva merkki | [aeiou] vastaa mitä tahansa vokaalia |
(...) |
Sieppaava ryhmä | (ab)+ vastaa "ab", "abab" |
Yleisiä kaavoja kokeiltavaksi
Kopioi nämä kaavat Regex-testausohjelmaan ja kokeile niitä.
Sähköpostiosoite
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
Vastaa standardeja sähköpostimuotoja, kuten user@example.com ja first.last@company.co.uk. Testaa sitä sekä kelvollisilla että kelvottomilla sähköpostimuodoilla nähdäksesi, miten se käsittelee reunatapaukset.
URL-osoite
https?://[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(/[^\s]*)?
Vastaa HTTP- ja HTTPS-URL-osoitteita, kuten https://example.com ja http://site.org/path/page. s? tekee "s"-kirjaimesta "https"-sanassa valinnaisen.
Puhelinnumero (yhdysvaltalainen muoto)
(\+1[-.\s]?)?\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}
Vastaa erilaisia yhdysvaltalaisia puhelinmuotoja: (555) 123-4567, 555-123-4567, +1 555.123.4567 ja vastaavat variantit.
Vinkki Regex-kaavaa rakentaessa aloita yksinkertaisimmalla kaavalla, joka vastaa kohdetekstiäsi, ja lisää sitten rajoituksia yksi kerrallaan. Monimutkaisen regexin kirjoittaminen kerralla on paljon vaikeampaa kuin sen rakentaminen vähitellen seuraten vastaavuuksien päivittymistä reaaliajassa.
Yleisiä virheitä ja niiden välttäminen
Erikoismerkkien escaping unohtaminen. Merkeillä kuten ., *, +, ?, (, ), [, ], {, } on erityinen merkitys regexissä. Vastaavuuden löytämiseksi kirjaimellisesti, lisää eteen kenoviiva: \. vastaa pistettä, \( vastaa sulkua.
Liika ahneus. Oletuksena * ja + vastaavat niin paljon tekstiä kuin mahdollista. Jos haluat lyhimmän vastaavuuden, lisää ? niiden jälkeen: .*? vastaa niin vähän kuin mahdollista.
Kaavan ankkuroimatta jättäminen. Ilman ^ ja $ kaava kuten \d{3} vastaa mitä tahansa kolmea peräkkäistä numeroa missä tahansa merkkijonossa, mukaan lukien pidempien numeroiden sisällä. Käytä ankkureita, kun sinun täytyy vastata koko merkkijonoa.
Tärkeää Regex-syntaksi vaihtelee hieman ohjelmointikielten ja työkalujen välillä. JavaScriptissä toimiva kaava voi käyttäytyä eri tavalla Pythonissa tai PHP:ssä. Testaa aina lopullinen kaavasi kielessä tai ympäristössä, jossa aiot käyttää sitä.
Usein kysytyt kysymykset
Mitä ovat regex-liput?
Liput muokkaavat kaavan soveltamistapaa. Yleisiä lippuja ovat g (globaali — löydä kaikki vastaavuudet, ei vain ensimmäistä), i (kirjainkoosta riippumaton) ja m (monirivinen — ^ ja $ vastaavat rivin rajoja, eivät vain merkkijonon rajoja). Regex-testausohjelma antaa sinun vaihtaa näitä lippuja.
Voinko käyttää regexiä haku- ja korvausoperaatioissa?
Kyllä. Useimmat tekstieditorit ja ohjelmointikielet tukevat regex-pohjaista haku-korvaus-toimintoa. Sieppausryhmät (...) antavat sinun viitata vastattuun tekstiin korvaavassa merkkijonossa.
Kuinka saan vastaavuuden useilla riveillä?
Käytä s-lippua (dotall) saadaksesi .-merkin vastaamaan rivinvaihtomerkkejä, tai käytä [\s\S] moni-alusta-vaihtoehtona, joka vastaa mitä tahansa merkkiä, mukaan lukien rivinvaihdot.
Seuraavat vaiheet
Nyt kun osaat rakentaa ja testata regex-kaavoja, kokeile niitä koodissasi, tekstieditorissasi tai komentorivityökaluissa. Muiden kehittäjäapuvälineiden osalta tutustu Cron-jäsentimeen ajoituslausekkeille tai JSON-muotoilijaan strukturoitujen tietojen käsittelyyn.