Ero sivun ”Säännöllinen lauseke” versioiden välillä

Siirry navigaatioon Siirry hakuun
774 merkkiä lisätty ,  17. helmikuuta 2010
johdanto pidennetty: eri syntaksit, vrt glob; {m,n} uudempi laajennos
(johdanto pidennetty: eri syntaksit, vrt glob; {m,n} uudempi laajennos)
Rivi 1: Rivi 1:
'''Säännöllinen lauseke''' (engl. '''regular expression''', '''regexp''') on yksinkertainen merkkijonokieli, joka voi joko ''vastata'' tai ''olla vastaamatta'' jotain toista merkkijonoa.  Linux- ja Unix-järjestelmissä säännöllisiä lauskkeista on suurta hyötyä [[komentorivi]]ä käytettäessä, mm. komennoissa [[awk]] ja [[grep]]. Niiden voidaankin sanoa olevan [[putki]]ttamiseen yhdistettynä tärkeimpiä työkaluja, joita komentorivin edistynyt käyttö edellyttää.
'''Säännöllinen lauseke''' (engl. '''regular expression''', '''regexp''') on yksinkertainen merkkijonokieli, joka voi joko ''vastata'' tai ''olla vastaamatta'' jotain toista merkkijonoa.  Linux- ja Unix-järjestelmissä säännöllisiä lauskkeista on suurta hyötyä [[komentorivi]]ä käytettäessä merkkijonojen etsi/korvaa-toiminnoissa. Niiden voidaankin sanoa olevan [[putki]]ttamiseen yhdistettynä tärkeimpiä työkaluja, joita komentorivin edistynyt käyttö edellyttää.
 
Tämän säännöllisten lausekkeiden esityksen perusteella lausekkeet ymmärtää, mutta kaikissa yhteyksissä syntaksi ei ole sama. Kolme syntaksityyppiä on yleisesti käytössä: alkuperäinen ("basic"), laajennettu ("extended") ja [[perl]]-tyyppinen. Ensinmainitussa useammat merkit vastaavat itseään ja esimerkiksi "+" alla esitetään "\+". Alla esitetään GNU-ohjelmien mukainen laajennettu syntaksi. Varsinkin usealla koneella käytettäviä skriptejä kirjoitettaessa pitää olla huolellinen siinä, mitä lajennoksia käyttää.
 
Säännöllisiä lausekkeita ei pidä sekoittaa tiedostonimi-jokereihin ("glob"), joilla on osittain sama toiminnallisuus (vrt muoto "*" ja ".*").


== Teoriaa ==
== Teoriaa ==
Rivi 105: Rivi 109:
tarkoittaa ''"korkeintaan m kertaa"''.
tarkoittaa ''"korkeintaan m kertaa"''.


Sivuhuomatuksena todettakoon, että yllä olevan perusteella lyhyemmät operaattorit <tt>*</tt>, <tt>+</tt> ja <tt>?</tt> voitaisiin aina korvata ilmaisuilla <tt>{0,}</tt>, <tt>{1,}</tt> ja <tt>{0,1}</tt> vastaavasti.
Sivuhuomatuksena todettakoon, että yllä olevan perusteella lyhyemmät operaattorit <tt>*</tt>, <tt>+</tt> ja <tt>?</tt> voitaisiin aina korvata ilmaisuilla <tt>{0,}</tt>, <tt>{1,}</tt> ja <tt>{0,1}</tt> vastaavasti. {m,n}-muoto on kuitenkin uudempi laajennos, joka ei toimi kaikissa ohjelmassa.


===== Huomautuksia =====
===== Huomautuksia =====
785

muokkausta

Navigointivalikko