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

Siirry navigaatioon Siirry hakuun
30 merkkiä lisätty ,  9. syyskuuta 2020
Selvennetty muutamia lyhenteitä.
(oikoluku korjailut)
(Selvennetty muutamia lyhenteitä.)
 
(3 välissä olevaa versiota 3 käyttäjän tekeminä ei näytetä)
Rivi 27: Rivi 27:
  bono
  bono


Yleensä (mm. grep ja awk) katsotaan, että kohteen alussa ja lopussa voi olla mielivaltainen määrä ei-vastaavia merkkejä. Tällöin kohde (s.o. näiden komentojen tapauksessa jokin ''rivi'' jossain tiedostossa) vastaa lauseketta, jos edes jokin sen ''osa'' vastaa lauseketta. Siis grep ja awk -yhteydessä lauseke
Yleensä (mm. grep ja awk) katsotaan, että kohteen alussa ja lopussa voi olla mielivaltainen määrä ei-vastaavia merkkejä. Tällöin kohde (eli näiden komentojen tapauksessa jokin ''rivi'' jossain tiedostossa) vastaa lauseketta, jos edes jokin sen ''osa'' vastaa lauseketta. Siis grep ja awk -yhteydessä lauseke
  abba
  abba
vastaa kohdetta
vastaa kohdetta
Rivi 138: Rivi 138:
  '''hu'''aa!!
  '''hu'''aa!!
  '''hu'''uuurraa!!
  '''hu'''uuurraa!!
  '''hurr'''urrur!!
  '''hurr'''urrur!! // miksi ei vastaa???
jne.
jne.


Rivi 350: Rivi 350:


=== Rivin alku ja loppu: <tt>^</tt> ja <tt>$</tt>===
=== Rivin alku ja loppu: <tt>^</tt> ja <tt>$</tt>===
On voinut herätä kysymys, kuinka voidaan vastata kohdetta (s.o. riviä) ''tarkalleen''. Heti alussa selvisi, että esim grepin mielestä kohde (rivi) vastaa lauseketta, jos lauseke esiintyy missä tahansa kohdassa riviä. Jos halutaan, että lauseke vastaa alusta loppuun tarkalleen koko riviä, on otettava käyttöön erikoismerkit <tt>^</tt> ja <tt>$</tt>. Nämä vastaavat kohteessa rivin tai merkkijonon alkua ja loppua kuvaavia "näkymättömiä" merkkejä vastaavasti. Siten
On voinut herätä kysymys, kuinka voidaan vastata kohdetta (eli riviä) ''tarkalleen''. Heti alussa selvisi, että esim grepin mielestä kohde (rivi) vastaa lauseketta, jos lauseke esiintyy missä tahansa kohdassa riviä. Jos halutaan, että lauseke vastaa alusta loppuun tarkalleen koko riviä, on otettava käyttöön erikoismerkit <tt>^</tt> ja <tt>$</tt>. Nämä vastaavat kohteessa rivin tai merkkijonon alkua ja loppua kuvaavia "näkymättömiä" merkkejä vastaavasti. Siten
  ^abba$
  ^abba$
vastaa vain riviä
vastaa vain riviä
Rivi 410: Rivi 410:


===== Pako komentotulkista =====
===== Pako komentotulkista =====
Jos halutaan antaa jokin monimutkaisempi ilmaisu, on hyvä asettaa säännöllinen lauseke yksinkertaisten heittomerkkien <tt>'</tt> sisään, jotta ne regexp-operaattorit, joillla on jokin erikoismerkitys [[komentotulkki|komeotulkissa]] eivät aiheuta ongelmia.
Jos halutaan antaa jokin monimutkaisempi ilmaisu, on hyvä asettaa säännöllinen lauseke yksinkertaisten heittomerkkien <tt>'</tt> sisään, jotta ne regexp-operaattorit, joillla on jokin erikoismerkitys [[komentotulkki|komentotulkissa]] eivät aiheuta ongelmia.
  $ echo moi | egrep m(o|a)i
  $ echo moi | egrep m(o|a)i
  -bash: syntax error near unexpected token `('
  -bash: syntax error near unexpected token `('
Rivi 480: Rivi 480:
*[[wikipedia:fi:pinoautomaatti|Pinoautomaatti]]
*[[wikipedia:fi:pinoautomaatti|Pinoautomaatti]]
*[[wikipedia:fi:turingin kone|Turingin kone]]
*[[wikipedia:fi:turingin kone|Turingin kone]]
*[http://www.ohjelmointiputka.net/opas.php?tunnus=phpsl Säännölliset lausekkeet PHP:ssä] -opas Ohjelmointiputkassa
*[http://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=php_16 Säännölliset lausekkeet PHP:ssä] -opas Ohjelmointiputkassa
*[http://swtch.com/~rsc/regexp/regexp1.html Regular Expression Matching Can Be Simple And Fast]: Keskustelua säännöllisten lausekkeiden toteutuksesta C-kielellä englanniksi.
*[http://swtch.com/~rsc/regexp/regexp1.html Regular Expression Matching Can Be Simple And Fast]: Keskustelua säännöllisten lausekkeiden toteutuksesta C-kielellä englanniksi.


Rekisteröitymätön käyttäjä

Navigointivalikko