Olen tehnyt noita SL - haasteita muutaman. C# säännöllisen lausekkeen alkuun ja loppuun merkitään merkit ^ ja $ (esim. "^([0-1][0-1])$").
Ohjelmointiputkan palautus ei kuitenkaan hyväksy noita merkkejä (^$), joten olen laittanut vastaukseeni lausekkeen ilman niitä.
Nyt kun olen vastaamassa tuohon nelostehtävään, niin se ei hyväksy lausekettani: @"^([0-1])[0-1]*\1$" olen siis laittanut sen muodossa ([0-1])[0-1]*\1, mutta tulee vain ilmoitus, että "\"- merkkiä ei voi käyttää. Mitä muissa kielissä käytetään "\" -tilalta regex:ssä?
Ei se näytä hyväksyvän seuraavaakaan tehtävään 5: "^([0-1])[0-1]*(?<!\1)$"
Onko asia niin, että muissa kielissä merkitään lausekkeita eritavoilla?
Olisi järkevää lukea haasteen ohjeet ennen tehtävien tekemistä. Ohjeissa kerrotaan säännöllisten lausekkeiden teoriasta ja kerrotaan perinteisiin säännöllisiin lausekkeisiin kuuluvat (eli haasteessa sallitut) merkinnät. Tavallisiin säännöllisiin lausekkeisiin ei kuulu takaisinviittaus (backreference), eli sitä ei voi käyttää haasteessa. Lyhyesti sanottuna sallitut merkinnät ovat numeroiden lisäksi |()*+?{,}[-]
.
No eikö tuossa pidäkkään käyttää takaisinviittausta, että saa ekan numeron selville? (4 tehtävä)
Ei pidä, sillä takaisinviittaus ei kuulu perinteisiin säännöllisiin lausekkeisiin eikä sitä voi käyttää haasteessa ollenkaan. Ehkä jotain vinkkiä voi hakea myös siitä, että ehdottamasi ratkaisu olisi mahdollista helposti lyhentää muotoon ”(0|1)[01]*\1
”, joka olisi vain 12 merkkiä pitkä, mutta tehtävän ennätys on 15 merkkiä.
Tutustuin tänään ekaa kertaa säännöllisiin lausekkeisiin, niin en ole vielä ymmärtänyt, kuin vasta ihan alkeet.
Sain tehtyä sen tehtävän. (Mod. huom: Älä laita vastauksia keskusteluun...)
Aihe on jo aika vanha, joten et voi enää vastata siihen.