Säännöllisten lausekkeiden perusten pikaopas
Säännöllinen lauseke (regex) on tekstiä vastaava malli. Jokainen merkki, eli token, muuttaa mallin toimintaa. Alla oleva opas luettelee hyödyllisimmät merkit selkeällä merkityksellä ja pienellä kopiointiesimerkillä.
| Token | Merkitys | Esimerkki |
|---|---|---|
| . | Matches any single character except newline. | a.c matches abc, a c |
| * | Matches the preceding token zero or more times. | ab* matches a, abb |
| + | Matches the preceding token one or more times. | ab+ matches ab, abb |
| ? | Makes the preceding token optional (zero or one). | colou?r matches color, colour |
| [] | Character set: matches any one character inside. | [aeiou] matches any vowel |
| [^] | Negated set: matches any character NOT inside. | [^0-9] matches any non-digit |
| \d | Matches any digit (0-9). | \d+ matches 42, 007 |
| \w | Matches any word character (a-z, A-Z, 0-9, _). | \w+ matches hello_1 |
| \s | Matches any whitespace (space, tab, newline). | a\sb matches a b |
| ^ | Anchors the match to the start of a line/string. | ^Hello matches start of string |
| $ | Anchors the match to the end of a line/string. | world$ matches end of string |
| | | Alternation: matches the pattern on either side. | cat|dog matches cat or dog |
| () | Groups a sub-pattern (and captures it). | (ab)+ matches ab, abab |
| {n,m} | Quantifier: match the preceding token n to m times. | a{2,4} matches aa, aaaa |
| (?i) | Inline flag: makes the pattern case-insensitive. | (?i)hello matches HELLO |
Huomautukset
- Useimmat merkit menettävät erikoismerkityksensä merkkiluokan [ ] sisällä. Esimerkiksi . [ ]:n sisällä vastaa vain kirjainnopeaa pistettä.
- Kenoviiva (\) on ohitusmerkki: muuttaa erikoismerkin kirjaimelliseksi ja päinvastoin.
- Moottorit eroavat: Python, JavaScript, PCRE ja Golang jakavat useimmat merkit, mutta liput ja look-around tukevat vaihtelevat.
Usein kysytyt kysymykset
- Mihin piste (.) sopii?
- Oletusarvoisesti piste sopii mihin tahansa yksittäiseen merkkiin paitsi rivinvaihtoon. Kirjaimelliseen pisteeseen sopiminen vaatii escape-merkinnän \.
- Mitä eroa on * ja + välillä?
- Asteriski * sopii edelliseen merkkiin nolla tai useammin, joten 'ab*' sopii myös 'a':han. Plus + vaatii vähintään kerran, sopii 'ab':hen mutta ei pelkkään 'a':han.
- Miten sopii numeroon tai sanamerkkiin?
- Käytä \d mitä tahansa numeroa (0-9) ja \w sanamerkkiä (kirjaimet, numerot, alaviiva) varten. Kielteiset ovat \D ja \W.
- Mihin ^ ja $ käytetään?
- ^ ankkuroi sopimisen merkkijonon tai rivin alkuun; $ loppuun. Yhdessä ^kaava$ pakottaa koko merkkijonon täsmäämään.