⊗pyPmREHHy 47 of 129 menu

Yhdysviiva joukoissa Pythonin säännöllisissä lausekkeissa

Yhdysviiva on myös erikoismerkki [ ]-suluissa (mutta ei sulkujen ulkopuolella). Jos tarvitset yhdysviivaa itsessään symbolina - aseta se paikkaan, jossa se ei tulkita ryhmän erottajaksi.

Miksi tämä on tärkeää: voit luoda merkkiryhmän huomaamattasi. Esimerkiksi näin - '[:-@]' - luulet valitsevasi kaksoispisteen, yhdysviivan ja @-merkin, mutta itse asiassa saat merkkiryhmän väliltä : ja @. Tähän ryhmään kuuluvat seuraavat merkit: ? < = > :

Mistä ne tulevat? ASCII-taulukosta - kaksoispisteellä on pienempi numero kuin @-merkillä - ja niin muodostuu ryhmä. Kaikki ryhmät muodostetaan ASCII-taulukon mukaan (tätä voi halutessaan hyödyntää).

Miten tämä korjataan: aseta yhdysviivamerkki paikkaan, jossa sitä ei varmasti tulkita ryhmäsymboliksi, esimerkiksi alkuun tai loppuun (eli [-sulun jälkeen tai ]-sulun eteen).

Yhdysviivan voi myös escapeta - silloin se tarkoittaa aina itseään riippumatta asemasta. Esimerkiksi, [:-@]:n sijasta kirjoitetaan [:\-@] - eikä ryhmää enää muodostu, vaan on kolme merkkiä - kaksoispiste, yhdysviiva ja @-merkki @.

Esimerkki

Seuraavassa esimerkissä hakumalli on seuraava: numero 1, sitten kirjain väliltä 'a' 'z':een, sitten numero 2:

txt = '1a2 1-2 1c2 1z2' res = re.sub('1[a-z]2', '!', txt) print(res)

Koodin suorituksen tulos:

'! 1-2 ! !'

Esimerkki

Escapeetaan nyt yhdysviiva. Tuloksena hakumalli on seuraava: numero 1, sitten kirjain 'a', tai yhdysviiva, tai kirjain 'z', sitten numero 2:

txt = '1a2 1-2 1c2 1z2' res = re.sub('1[a\-z]2', '!', txt) print(res)

Koodin suorituksen tulos:

'! ! 1c2 !'

Esimerkki

Yhdysviivan voi myös siirtää escapettamatta sitä:

txt = '1a2 1-2 1c2 1z2' res = re.sub('1[az-]2', '!', txt) print(res)

Koodin suorituksen tulos:

'! ! 1c2 !'

Esimerkki

Seuraavassa esimerkissä hakumalli on seuraava: ensimmäinen merkki on pieni kirjain tai yhdysviiva '-', sitten kaksi kirjainta 'x':

txt = 'axx Axx -xx @xx' res = re.sub('[a-z-]xx', '!', txt) print(res)

Koodin suorituksen tulos:

'! Axx ! @xx'

Esimerkki

Seuraavassa esimerkissä hakumalli on seuraava: ensimmäinen merkki on pieni, iso kirjain tai yhdysviiva '-', sitten kaksi kirjainta 'x':

txt = 'axx Axx -xx @xx' res = re.sub('[a-zA-Z-]xx', '!', txt) print(res)

Koodin suorituksen tulos:

'! ! ! @xx'

Esimerkki

Yhdysviivan voi sijoittaa kahden ryhmän väliin - siellä se varmasti ei luo uutta ryhmää:

txt = 'axx 9xx -xx @xx' res = re.sub('[a-z-0-9]xx', '!', txt) print(res)

Koodin suorituksen tulos:

'! ! ! @xx'

Käytännön tehtävät

Annettu merkkijono:

txt = 'xaz xBz xcz x-z x@z'

Etsi kaikki merkkijonot seuraavan mallin mukaan: kirjain 'x', iso tai pieni kirjain tai yhdysviiva, kirjain 'z'.

Annettu merkkijono:

txt = 'xaz x$z x-z xcz x+z x%z x*z'

Etsi kaikki merkkijonot seuraavan mallin mukaan: kirjain 'x', sitten joko dollarimerkki, yhdysviiva tai plusmerkki, sitten kirjain 'z'.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää