Aiheet. ICS-C2000 Tietojenkäsittelyteoria M := Äärelliset automaatit vs. säännölliset lausekkeet. Äärelliset automaatit

Samankaltaiset tiedostot
Automaattimalleista poikkeava tapa kuvata yksinkertaisia kieliä. Olkoot A ja B aakkoston Σ kieliä. Perusoperaatioita:

2.6 SÄÄNNÖLLISET LAUSEKKEET Automaattimalleista poikkeava tapa kuvata yksinkertaisia kieliä. Olkoot A ja B aakkoston Σ kieliä. Perusoperaatioita:

2.2 Automaattien minimointi

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

T Syksy 2002 Tietojenkäsittelyteorian perusteet Harjoitus 5 Demonstraatiotehtävien ratkaisut. ja kaikki a Σ ovat säännöllisiä lausekkeita.

Olkoon. äärellinen automaatti. Laajennetaan M:n siirtymäfunktio yksittäisistä syötemerkeistä merkkijonoihin: jos q Q, x Σ, merkitään

Olkoon. M = (Q, Σ, δ, q 0, F)

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 22. syyskuuta 2016

Automaatin tunnistama kieli on sen hyväksymien merkkijonojen joukko. Täsmällinen muotoilu: δ,q 0,{q 2,q 3,q 6 }), missä

ICS-C2000 Tietojenkäsittelyteoria Kevät 2015

Säännöllisten operaattoreiden täydentäviä muistiinpanoja

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Laskennan mallit (syksy 2010) 1. kurssikoe, ratkaisuja

Laskennan mallit (syksy 2007) Harjoitus 5, ratkaisuja

Q = {q 1, q 2, q 3, q 4 } Σ = {a, b} F = {q 4 },

Laskennan perusmallit 2013: Kertausta

3.3 KIELIOPPIEN JÄSENNYSONGELMA Ratkaistava tehtävä: Annettu yhteydetön kielioppi G ja merkkijono x. Onko

Kuvausta f sanotaan tällöin isomorfismiksi.

Kertausta: kielet ja automaatit. ICS-C2000 Tietojenkäsittelyteoria. Alue ja aiheet. Äärelliset automaatit

T /2 Tietojenkäsittelyteorian perusteet T/Y

TAMPEREEN YLIOPISTO Valinnaisten opintojen syventäviin opintoihin kuuluva tutkielma. Lauri Kumpulainen. Büchin automaateista

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Kieli, merkitys ja logiikka, kevät 2011 HY, Kognitiotiede. Vastaukset 2.

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 19. tammikuuta 2012

T /1002 Tietojenkäsittelyteorian perusteet T/Y

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011

T /1002 Tietojenkäsittelyteorian perusteet T/Y

Mutta esimerkiksi 0-kertaisesti pumpattaessa: Siten L ei voi olla säännöllinen.

Havaitaan: muuttujan NykyisetTilat arvot kuuluvat potenssijoukkoon P(Q).

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

ICS-C2000 Tietojenkäsittelyteoria. Tähän mennessä: säännölliset kielet. Säännöllisten kielten pumppauslemma M :=

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 19. syyskuuta 2016

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 29. toukokuuta 2013

Riemannin integraalista

Pythagoraan lause. Pythagoras Samoslainen. Pythagoraan lause

ICS-C2000 Tietojenkäsittelyteoria

Äärellisten automaattien ja säännöllisten kielten ekvivalenssi

uv n, v 1, ja uv i w A kaikilla

VEKTOREILLA LASKEMINEN

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2015

Käydään läpi: ääriarvo tarkastelua, L Hospital, integraalia ja sarjoja.

Laskennan perusmallit (LAP)

12. Merkkijonot Merkkijonojen abstrakti tietotyyppi

OSA 1: POLYNOMILASKENNAN KERTAUSTA, BINOMIN LASKUSÄÄNTÖJÄ JA YHTÄLÖNRATKAISUA

VEKTOREILLA LASKEMINEN

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011

Neliömatriisin A determinantti on luku, jota merkitään det(a) tai A. Se lasketaan seuraavasti: determinantti on

Laskennan mallit Erilliskoe , ratkaisuja (Jyrki Kivinen)

Q on automaatin tilojen äärellinen joukko; Σ on automaatin syöteaakkosto; δ : Q Σ Q on automaatin siirtymäfunktio; q 0 Q on automaatin alkutila;

Säännöllisten kielten sulkeumaominaisuudet

Riemannin integraali

MS-A010{3,4} (ELEC*) Differentiaali- ja integraalilaskenta 1 Luento 7: Integraali ja analyysin peruslause

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. marraskuuta 2015

MS-A010{2,3,4,5} (SCI,ELEC*, ENG*) Differentiaali- ja integraalilaskenta 1 Luento 7: Integraali ja analyysin peruslause

Täydentäviä muistiinpanoja epädeterministisistä äärellisistä automaateista

Säännölliset kielet. Sisällys. Säännölliset kielet. Säännölliset operaattorit. Säännölliset kielet

4 DETERMINANTTI JA KÄÄNTEISMATRIISI

Jos sekaannuksen vaaraa ei ole, samastamme säännöllisen lausekkeen ja sen esittämän kielen (eli kirjoitamme R vaikka tarkoitammekin L(R)).

Kognitiivinen mallintaminen I, kevät Harjoitus 1. Joukko-oppia. MMIL, luvut 1-3 Ratkaisuehdotuksia, MP

II.1. Suppeneminen., kun x > 0. Tavallinen lasku

2.5 Säännöllisten kielten rajoituksista

Arvostelu OHJ Johdatus tietojenkäsittelyteoriaan syksy op. Viikkoharjoitukset. Materiaali. Kurssista voi selvitä parhaalla mahdollisella

Reaalinen lukualue. Millainen on luku, jossa on päättymätön ja jaksoton desimaalikehitelmä?

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

T Kevät 2009 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (Predikaattilogiikka )

(0 1) 010(0 1) Koska kieli on yksinkertainen, muodostetaan sen tunnistava epädeterministinen q 0 q 1 q 2 q3

ICS-C2000 Tietojenkäsittelyteoria

Suorakaidekanavat. lindab suorakaidekanavat

Riemannin integraalista

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

Kertymäfunktio. Kertymäfunktio. Kertymäfunktio: Mitä opimme? 2/2. Kertymäfunktio: Mitä opimme? 1/2. Kertymäfunktio: Esitiedot

MS-A010{3,4} (ELEC*) Differentiaali- ja integraalilaskenta 1 Luento 8: Integraalifunktio ja epäoleellinen integraali

Kertausta 1. kurssikokeeseen

Syksyn 2015 Pitkän matematiikan YO-kokeen TI-Nspire CAS -ratkaisut

AUTOMAATTIEN SYNKRONISAATIOSTA

Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja

Määritelmä Olkoon C R m yksinkertainen kaari ja γ : [a, b] R m sen yksinkertainen parametriesitys, joka on paloittain C 1 -polku.

Sinilause ja kosinilause

Matematiikan johdantokurssi, syksy 2017 Harjoitus 6, ratkaisuista. 1. Onko jokin demojen 5 tehtävän 3 relaatioista

TEHTÄVÄ 1. Olkoon (f n ) jono jatkuvia funktioita f n : [a, b] R, joka suppenee välillä [a, b] tasaisesti kohti funktiota f : [a, b] R.

.) (b) Vertaa p :tä vastaavaa kineettistä energiaa perustilan kokonaisenergiaan. ( ) ( ) = = Ek

x k 1 Riemannin summien käyttö integraalin approksimointiin ei ole erityisen tehokasta; jatkuvasti derivoituvalle funktiolle f virhe b

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 6. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS. Pinoautomaatit.

2.1 Vaillinaiset yhtälöt

Laskennan perusmallit (LAP)

Matematiikan tukikurssi

Ristitulo ja skalaarikolmitulo

Digitaalinen videonkäsittely Harjoitus 5, vastaukset tehtäviin 25-30

5 Epäoleellinen integraali

SALAINEN KIRJASTO. Harjoitusvihkon. Eija Lehtiniemi OPETTAJAN OHJEET. Erityisopetus

2.4 Pienimmän neliösumman menetelmä

MS-A010{2,3,4,5} (SCI, ELEC*, ENG*) Differentiaali- ja integraalilaskenta 1 Luento 8: Integraalifunktio ja epäoleellinen integraali

Yllä osoitettiin, että säännöllisten kielten joukko on suljettu yhdisteen

7 Funktiosarjoista. 7.1 Funktiosarjojen suppeneminen

LAP: Laskennan perusmallit

Testaa: Vertaa pinon merkkijono syötteeseen merkki kerrallaan. Jos löytyy ero, hylkää. Jos pino tyhjenee samaan aikaan, kun syöte loppuu, niin

8. Kieliopit ja kielet

1.3 Toispuoleiset ja epäoleelliset raja-arvot

Numeeriset menetelmät TIEA381. Luento 9. Kirsi Valjus. Jyväskylän yliopisto. Luento 9 () Numeeriset menetelmät / 29

MS-A010{3,4} (ELEC*) Differentiaali- ja integraalilaskenta 1 Luento 9: Integroimismenetelmät

Transkriptio:

Aiheet ICS-C2000 Tietojenkäsittelyteori Luento 4: Säännölliset lusekkeet Alto-yliopisto Perustieteiden korkekoulu Tietotekniikn litos Kevät 2016 Säännöllisten lusekkeiden syntksi Säännöllisten lusekkeiden semntiikk Säännöllisten lusekkeiden j äärellisten utomttien yhteys Mterili: suomeksi Orposen prujun luvut 2.6 2.7 englnniksi Sipserin kirjn luku 1.3 2/32 Äärelliset utomtit Äärelliset utomtit vs. säännölliset lusekkeet q7 q7.. M :=. q0 q1 q2 q3 exp exp exp M :=. q0 q1 q2 q3 exp exp exp q4 q6 q4 q6 +,- q5 +,- q5 tunnist L(M) = {.256,1.,3.14,2.3E 10,... tunnist L(M) = {.256,1.,3.14,2.3E 10,...= L(r) kuv r := (dd.d.dd )(e(+ )dd ) (dd e(+ )dd ) 3/32 4/32

Säännölliset lusekkeet Säännöllisten lusekkeiden sovelluskohteit Säännöllisiä lusekkeit (j niiden ljennuksi) käytetään mm. Kääntäjien seljien spesifiointi (lkionimien tunnistus) Tekstin hku j muokkus Ominisuuksien kuvuskielet (esim. PSL)... : Opiskelijnumeroiden piilotus Pythonill from sys import stdin, stdout import re i d P t t e r n = re. compile ( r ( \ d { 5 [ A Z ] ) ( \ d { 6 ) ( K \ d { 5 ) ) f o r l i n e i n s t d i n : stdout. w r i t e ( i d P t t e r n. su ( xxxxxx, l i n e ) ) Syöte: Tulos: Oiv :Opiskelij:12345X:5:2:4:9 F.I. :Nnce :K12345:5:9:4:2 Rimo:Rketti :123456:7:7:7:9 Oiv :Opiskelij:xxxxxx:5:2:4:9 F.I. :Nnce :xxxxxx:5:9:4:2 Rimo:Rketti :xxxxxx:7:7:7:9 5/32 6/32 Säännölliset lusekkeet Automttimlleist poikkev tp kuvt yksinkertisi kieliä. Olkoot A j B kkoston Σ kieliä. Perusopertioit: Yhdiste: A B = {x Σ x A ti x B Ktentio: AB = {xy Σ x A j y B; Potenssit: { A 0 = {, A k = AA k 1 = {x 1...x k x i A i = 1,...,k (k 1); Sulkeum t. Kleenen tähti : A = A k k 0 = {x 1...x k k 0, x i A i = 1,...,k. Määritelmä Akkoston Σ säännölliset lusekkeet määritellään induktiivisesti säännöillä: 1. /0 j ovt Σ:n säännöllisiä lusekkeit; 2. on Σ:n säännöllinen luseke kikill Σ; 3. jos r j s ovt Σ:n säännöllisiä lusekkeit, niin (r s), (rs) j r ovt Σ:n säännöllisiä lusekkeit; 4. muit Σ:n säännöllisiä lusekkeit ei ole. Huom! Kksi ensimmäistä sääntöä ovt perustpukset kun ts kolms sääntö on induktiivinen (rekursiivinen) sääntö. Viimeisin sääntö oletetn yleensä implisiittisesti j jätetään sen tki usein pois. 7/32 8/32

Määritelmä Kukin Σ:n säännöllinen luseke r kuv kielen L(r), jok määritellään induktiivisesti: L(/0) = /0 L() = { L() = { kikill Σ L((r s)) = L(r) L(s) L((rs)) = L(r)L(s) L(r ) = (L(r)) Akkoston {, säännöllisiä lusekkeit: r 1 = (()), r 2 = (), r 3 = ( ), r 4 = (( ())) Lusekkeiden kuvmt kielet: L(r 1 ) = ({{){ = {{ = { L(r 2 ) = { = {,,,,... = {() i i 0 L(r 3 ) = {({) = {,,,,... = { i i 0 L(r 4 ) = ({{,) = {, = {,,,,,... = {x {, kutkin -kirjint x:ssä seur 1 ti 2 -kirjint j ennen jokist -kirjint on iemmin inkin 1 -kirjin. 9/32 10/32 Sulkumerkkien vähentämissääntöjä: Operttoreiden prioriteetti: Eli (( )) trkoitt (( ())) mutt ( ) olisi jo eri luseke (() ()) Yhdiste- j tulo-opertioiden ssositiivisuus: L(((r s) t)) = L((r (s t))) L(((rs)t)) = L((r(st))) peräkkäisiä yhdisteitä j tuloj ei trvitse sulutt. Edellisen esimerkin lusekkeet yksinkertisemmin esitettynä: r 1 =, r 2 = (), r 3 =, r 4 = (( )). C-kielen etumerkittömät reliluvut numer = (dd.d.dd )(e(+ )dd ) (dd e(+ )dd ), missä d on lyhennemerkintä lusekkeelle d = (0 1 2 3 4 5 6 7 8 9) j e on lyhennemerkintä lusekkeelle e = (E e). Usein merkitään myös lyhyesti rr r +. (d +.d.d + )(e(+ )d + ) (d + e(+ )d + ). 11/32 12/32

Säännöllisten lusekkeiden sieventäminen Säännöllisillä kielillä on yleensä useit vihtoehtoisi kuvuksi, esim.: Määritelmä 2.4 Kieli on säännöllinen, jos se voidn kuvt säännöllisellä lusekkeell. Σ = L(( ) ) = L(( ) ) Säännölliset lusekkeet r j s ovt ekvivlentit, merk. r = s, jos L(r) = L(s). Lusekkeen sieventäminen = yksinkertisimmn ekvivlentin lusekkeen määrittäminen. Säännöllisten lusekkeiden ekvivlenssitestus on epätrivili, mutt peritteess meknisesti rtkev ongelm. 13/32 14/32 Sievennyssääntöjä: r (s t) = (r s) t r(st) = (rs)t r s = s r r(s t) = rs rt (r s)t = rt st r r = r r /0 = r r = r /0r = /0 r = r r r = ( r) Mikä thns säännöllisten lusekkeiden tosi ekvivlenssi voidn joht näistä lskuleist, kun lisätään päättelysääntö: jos r = rs t, niin r = ts, edellyttäen että / L(s). Khden lusekkeen ekvivlenssin totemiseksi knntt usein päätellä erikseen kummnkin kuvmn kielen sisältyminen toiseen. Merkitään lyhyesti: r s, jos L(r) L(s). Tällöin siis r = s joss r s j s r. Todetn, että ( ) = ( ). 1. Selvästi ( ) ( ), kosk ( ) kuv kikki kkoston {, merkkijonoj. 2. Kosk selvästi ( ), niin myös ( ) ( ). 15/32 16/32

Äärelliset utomtit j säännölliset kielet r = : Luse 2.4 r = s t : Jokisen säännöllisen lusekkeen r kuvm kieli voidn tunnist äärellisellä utomtill. Todistus r = : M s Seurvn klvon induktiivisen konstruktion vull voidn mielivltisen säännöllisen lusekkeen r rkennett seurten muodost - utomtti M r, joll L(M r ) = L(r). Tästä utomtist voidn poist -siirtymät Luseen 2.3 mukisesti, j trvittess voidn syntyvä epädeterministinen utomtti determinisoid Luseen 2.2 konstruktioll. Esitettävästä konstruktiost on syytä huomt, että muodostettviin - utomtteihin tulee in yksikäsitteiset lku- j lopputil, eikä minkään os-utomtin lopputilst lähde eikä lkutiln tule yhtään ko. osutomtin sisäistä siirtymää. r = : ( Σ) r = st : M s M t r = s : M t Ms 17/32 18/32 Lusekkeest r = (( )) sdn näiden sääntöjen mukn seurv -utomtti: Edellä esitetty utomtti on selvästi hyvin redundntti. Käsin utomttej suunniteltess ne knnttkin usein muodost suorn (mikäli tietää, mitä on tekemässä). Esim. lusekkeest r = (( )) on suhteellisen helppo muodost seurv yksinkertinen epädeterministinen tunnistj-utomtti: 19/32 20/32

Luse 2.5 Jokinen äärellisellä utomtill tunnistettv kieli voidn kuvt säännöllisellä lusekkeell. Todistus Trvitn vielä yksi äärellisten utomttien ljennus: lusekeutomtiss voidn siirtymien ehtoin käyttää mielivltisi säännöllisiä lusekkeit. Formlisointi: Merk. RE Σ = kkoston Σ säännöllisten lusekkeiden joukko. Lusekeutomtti on viisikko M = (Q,Σ,δ,q 0,F), missä siirtymäfunktio δ on äärellinen kuvus δ : Q RE Σ P (Q) Yhden skelen tilnnejohto määritellään: (q,w) M (q,w ) jos on q δ(q,r) jollkin sellisell r RE Σ, että w = zw, z L(r). Muut määritelmät smt kuin iemmin. Todistetn: jokinen lusekeutomtill tunnistettv kieli on säännöllinen. Olkoon M jokin lusekeutomtti. Säännöllinen luseke, jok kuv M:n tunnistmn kielen, muodostetn khdess viheess: (so. δ(q,r) /0 vin äärellisen monell prill (q,r) Q RE Σ ). 21/32 22/32 1. Tiivistetään M ekvivlentiksi enintään 2-tiliseksi lusekeutomtiksi seurvill muunnoksill: (i) Jos M:llä on useit lopputiloj, yhdistetään ne seurvsti. (ii) Poistetn M:n muut kuin lku- j lopputil yksi kerrlln seurvsti. Olk. q jokin M:n til, jok ei ole lku- eikä lopputil; trkstelln kikki reittejä, jotk M:ssä kulkevt q:n kutt. Olk. q i j q j q:n välittömät edeltäjä- j seurjtil jollkin tällisell reitillä. Poistetn q reitiltä q i q j oheisen kuvn (i) muunnoksell, jos tilst q ei ole siirtymää itseensä, j kuvn (ii) muunnoksell, jos tilst q on siirtymä itseensä: (i): r s q i q q j q i rs q j (ii): t r s q i q q j q i rt s q j 23/32 24/32

2. Tiivistyksen päättyessä jäljellä olev 2-tilist utomtti vstv säännöllinen luseke muodostetn seurvll tvll: (i): r Smll yhdistetään rinnkkiset siirtymät seurvsti: r r r s q i q j q i q j s (ii): r 1 r 3 r2 r 1r 2 (r 3 r 4 r 1r 2 ) r 4 25/32 26/32 ( )() ( ) ( )() ( ) ( ( )() ( )) Sivupolku: säännölliset lusekkeet ohjelmointikielissä Merkkijonojen käsittely on tärkeää moness sovelluskohteess (syötteen vlidointi we-lomkkeiss, hhmojen tunnistus j korvus toisill editoreiss jne) Niinpä monet (kikki uusimmt?) ohjelmointikielet sisältävät tuen säännöllisille lusekkeille (ti niiden ljennuksille): re-kirjsto Python-kielessä (lkuun: HOWTO) regex-kirjsto uusimmss C++:ss scl.util.mtching.regex-luokk Scl-kielessä jv.util.regex-pketti Jv-kielessä JvScript (stndrdin EMCAScript), ktso esim. W3Schools j moni muit! Myös sequentil expressions (SEREs) litteiston ominisuuksien kuvuskielessä Property Specifiction Lnguge PSL (IEEE stndrd 1850) Eräs kirj: Jeffrey Friedl, Mstering Regulr Expressions 27/32 28/32

: Nodes: -rivin numeron lukeminen perl-kielessä perl-ohjelmn os: su getnodes { my( $f ) = $_ [ 0 ] ; open ( FILE, $f ) ; while ( $ l i n e = <FILE >) { i f ( $ l i n e =~ / ^ Nodes : \W *([0 9]+) / ) { $nodes = $1 ; close ( FILE ) ; $nodes ; Eräs dttiedosto: Cnrep updtes : 1 Genertors : 2 Mx l e v e l : 3 Aut : 8 Nodes : 109294 Lef nodes : 3 Bd nodes : 107682 Totl time : 2.60 seconds missä s =~/r/ trkoitt merkkijonon s vertilu säännölliseen lusekkeeseen r, ^ täsmää rivin lkuun, \W on white spce, [0-9] jokin merkki joukost {0, 1,..., 9, j sulkujen sisällä olevn lilusekkeeseen täsmäävä limerkkijono sijoitetn muuttujn $1 Ljennukset: cse Python Monet kielet tukevt puhtiden säännöllisten lusekkeiden ljennuksi, trkstelln esimerkkinä Pythonin re-kirjsto Kiinteään potenssiin korotus, esim. () 5, on mhdollist toisto-operttorin {m,n vull, missä m on vähimmäs- j n mksimitoistojen määrä. Esimerkiksi ( ){20,200 täsmää merkkijonon knss, joss 20 200 /-merkkiä peräkkäin. Voidn ilmist (mhdollisesti hyvinkin ison) puhtn lusekkeen. Tunnistus on oletusrvoisesti hne eli löydetään vin pisimpiä täsmääviä limerkkijonoj: >>> import re >>> f o r m i n re. f i n d i t e r ( r ( )+, c ) : m. spn ( )... ( 0, 4) ( 5, 11) 29/32 30/32 : Scl-ohjelm, jok etsii henkilötunnuksi syötteestä: vl hetu = " " " (? : ^ \ D) ( \ d \ d ) ( \ d \ d ) ( \ d \ d ) ( \ + A) ( \ d { 3 ) ([0 9A Y ] ) (? : $ [ ^0 9A Y ] ) " " ". r vl centurymp = Mp( " + " >1800, " " >1900, "A" >2000) vl checksumtoletter = " 0123456789ABCDEFHKLMNPQRSTUVWXY". zipwithindex. mp( _. swp ). tomp for ( l i n e < i o. Source. s t d i n. getlines ) { hetu. f i n d A l l M t c h I n ( l i n e ). forech { cse hetu ( dy, month, yer, century, id, check ) => { vl enbirthdte = s " $month / $dy / $ { centurymp ( century ) +yer. t o I n t " vl checksum = ( dy+month+yer+ i d ). tolong % 31 vl i s V l i d = checksumtoletter ( checksum. t o I n t ) == check ( 0 ) p r i n t l n ( s " " " A${ i f (! i s V l i d ) " n i n " else " " v l i d hetu f o r someone orn on $enbirthdte " " " ) Scl Regex j Jv Pttern Joillkin ljennuksill on mhdollist ilmist ei-säännöllisiä ominisuuksi. Esimerkiksi tksepäin viittuksill ( ck-references ) voidn tunnist kieli {wcw w {, seurvsti: >>> import re >>> p t t e r n = re. compile ( r ( [ ] * ) c \1 $ ) >>> f o r s i n [ c, c, c ] :... i f p t t e r n. mtch ( s ) : p r i n t ( s+ " kuuluu k i e l e e n " )... c kuuluu k i e l e e n c kuuluu k i e l e e n Rivin 2 muuttuj \1 täsmää edellä olevn sulutettuun lusekkeen täsmänneen merkkijonon knss. Kyseinen kieli ei ole säännöllinen (miksi? sin pltn myöhemmin kurssill). Pähkinöitä tlvi-iltoihin Säännöllisten lusekkeiden ristisntehtävä (syntksi melko stndrdi ohjelmointikielissä käytetty, ktso esim. tästä) 31/32 32/32