Pikaopas säännöllisiin lausekkeisiin

G Suite ja Office 360 käyttäjille ja Python-kehittäjille

(Badi James) (20. toukokuuta 2020)

Kielen käyttö on harvoin helppoa käsitellessä oivalluksia. Jopa tehtävä löytää ja laskea, kuinka monta kertaa sana esiintyy tekstissä, tehtävä, joka näyttää ensi silmäyksellä kuin sen pitäisi olla helppo tehdä nykyaikaisilla tekstinkäsittelyohjelmilla ja koodaavien kirjastojen kanssa, voi aiheuttaa komplikaatioita nopeasti.

Ota esimerkki siitä, kuinka yritetään selvittää, mainitaanko taivas taivaankappaleessa. Yksinkertainen lähestymistapa olisi vain:

  • Ctrl + F ”sky” (jos käytät tekstieditoria tai tekstinkäsittelyohjelmaa)
  • ”sky” tekstissä body\_of\_text (jos kirjoitat kirjoitus pythonissa)

Molemmat lähestymistavat eivät kuitenkaan aina löydä taivaan mainintoja, ja joskus ne tuottavat vääriä positiivisia tuloksia. Näiden lähestymistapojen rajoitukset johtuvat siitä, kuinka he etsivät tarkkaa merkkijonoa s-k-y. Alla on lueteltu joitain kielen piirteitä, jotka aiheuttavat tämän lähestymistavan epäonnistumisen:

  • Isot kirjaimet: Jos lause alkaa ”Sky” tai ”Sky” näkyy osana substantiivia (tai jos tekstin kirjoittajalla oli rikki iso kirjain-näppäin) sanan näitä esiintymisiä ei löydy.
  • Muiden sanojen oikeinkirjoitus: Sanojen, kuten ”pe sky ”,” ri sky ”jne. aiheuttaa ”Taivas” havaitaan väärin.
  • Monikurssit: ”Taivasta” ei löydy.

Monilla tekstinkäsittelijöillä ja tekstieditorilla on vaihtoehtoja Etsi- ja Korvaa ”-toiminnot kahden ensimmäisen ongelman ratkaisemiseksi. Itse asiassa tyypillisesti vaihtoehdot, kuten ”Ohita tapaus” ja ”Sanaa koko sanat”, ovat oletusarvoisesti käytössä. Puuttuvien vaihtoehtoisten sanamuotojen (monikkomuodot, aikamuodot, sukupuoli jne.) Tai vaihtoehtoisten kirjoitusasujen (esimerkiksi Mohammad-nimen monien muunnelmien) puute on kuitenkin edelleen olemassa.

Pythonilla voit laajentaa hakulausekkeesi rungon\_teksti koodirivillä lisäämällä ehdollisia, jotka kattavat sanan kaikki muunnelmat ja sulkevat pois väärät positiiviset osumat. Mutta tämä voi olla tuska tehdä ja voi tehdä koodistasi tälle oletettavasti yksinkertaiselle tehtävälle pitkä ja vaikea ylläpitää.

Syötä säännölliset lausekkeet

Säännölliset lausekkeet (tai lyhyet lausekkeet) ovat tehokkaat työkalut tekstimerkkien löytämiseen. Ajatuksena on, että sen sijaan, että annat koodille tai tekstinkäsittelylaitteelle tietyn merkkisarjan löydettäväksi, annat sille mallin (säännöllisen lausekkeen), joka kuvaa sääntöjä, joita haluat käyttää laajentamaan tai rajoittamaan tekstin osia annettu malli.

Näiden sääntöjen määrittäminen saavutetaan lisäämällä erikoismerkkejä säännölliseen lausekkeeseesi. Otetaan yllä oleva esimerkki taivaasta. Säännöllinen lauseke ”\ bsk (y | ies) \ b” vastaa sekä taivasta että taivasta, mutta ei sanaa ”ärsyttävä”, ”riskialtista” tai muuta s-k-y: tä sisältävää sanaa. Eritellään jokaisen lisäämiemme erikoismerkkien tarkoitus:

Lausekkeen molempia päitä reunustava” \ b ”määrittää sanarajat, eli välilyönnit, välimerkit, tekstin alun tai lopun jne. Tämä estää regexiä vastaamasta muita sanat, joissa ”sky” on osa oikeinkirjoitusta (kuten ”ärsyttävä” tai ”Skype”).

Suluissa luodaan sieppausryhmä. Tätä käytetään määrittelemään, mihin regex-osaan haluat soveltaa tiettyä sääntöä. Tässä sieppausryhmässä meillä on ”|” (alias pystysuora palkki). Tämä toimii TAI-operaattorina ja määrittää, että joko ilmaus vasemmalla (”y”) tai ilmaus oikealla (”s”) voi olla osa ottelua. Tämän avulla regeximme voi sovittaa sekä yksinäisen taivaan että monikon taivaan.

Isojen kirjainten ongelman ratkaisemiseksi tämä on yleensä ei-kysymys, koska Etsi-ohjelmassa Ohita tapaus -vaihtoehto. toimintoja useimmissa tekstinkäsittelijöissä ja tekstieditorissa voidaan käyttää myös haettaessa regexiä. Kun käytetään Python-regex-kirjastoa re, e IGNORECASE -lippua voidaan käyttää, kun haetaan regexin kautta (lisätietoja siitä myöhemmin). Ilman tätä vaihtoehtoa tai tätä lippua voimme kuitenkin sovittaa taivaan, taivaan, taivaan ja taivaan lisäämällä regexiä sellaisenaan: ”\ b (S | s) k (y | ies) \ b”

Joten kuten näette, säännölliset lausekkeet ovat tehneet taivaan etsinnästä paljon hedelmällisempää! Tämä oli kuitenkin suhteellisen yksinkertainen esimerkki siitä, mitä regex voi tehdä. Alla on muutama esimerkki, jotka osoittavat säännöllisten lausekkeiden voiman ja monipuolisuuden:

  • M (u | o) hamm? (E | a) (d | t) vastaa eniten oikeinkirjoituksen muunnelmat Mohammad
  • (? Mountain) pyörästä ottelut Pyörä mutta ei Maastopyörä
  • kahvi (?! päivämäärä) vastaa kahvia mutta ei kahvin päivämäärä
  • (https: \ / \ /)? (www \.)? [a- z0–9] + \. [az] + (\. [az] +)? vastaa monia URL-osoitteita
  • [a-zA-Z0–9 -\_.] + @ [a-zA-Z] + \. [a-zA-Z] + ( [. [a-zA-Z] +)? vastaa monia sähköpostiosoitteita

regexr.com: loistava verkkosivusto regexin oppimiseen

Aikaisemmin kuvatut esimerkit ovat saattaneet saada sinut ajattelemaan, että ”se näyttää hyödylliseltä, mutta kuinka muistan kaikki erilaiset hahmot ja mitä he tekevät? Ja miten saan selville, toimiiko säännöllinen lausekkeeni aiotulla tavalla? ”. Älä huoli, regexr.com on täällä apuna.

Tällä verkkosivustolla voit rakentaa säännöllisiä lausekkeita käyttämällä annettuja huijauslehtiä. ja liitä tekstiin testataksesi niitä. Mahdolliset osumat korostetaan tekstissä ja näytettyjen vastaavuuksien määrä. Regex on värikoodattu, ja kätevät työkaluvihjeet kuvaavat mitä kukin hahmo tekee vietessään hiiren niiden päälle. Tämä sopii erinomaisesti regexin oppimiseen käyttämällä regexiä.

Regexin käyttäminen Google-dokumenteissa ja Google Sheetsissä

Regexin käyttö näissä G Suite -sovelluksissa on yksinkertaista ja käyttäjäystävällistä. Paina yksinkertaisesti Ctrl + F ja napsauta sitten kolmea pystypistettä selaimen vasemmassa yläkulmassa näkyvässä hakukentässä. Vaihtoehtoisesti siirry pudotusvalikoista kohtaan Muokkaa -> Etsi ja korvaa . Tämä avaa Etsi ja korvaa -ikkunan. Täältä löydät Yhdistä säännöllisten lausekkeiden avulla (Docs) tai Etsi säännöllisten lausekkeiden avulla (Sheets) -valintaruutu. Kun olet valinnut, voit liittää säännöllisen lausekkeen Etsi -kenttään. Mahdolliset osumat korostetaan asiakirjassa ja vastaavuuksien määrä näkyy Etsi -kentässä. Voit silti käyttää muita käytettävissä olevia Etsi ja korvaa -vaihtoehtoja, kuten Ottelutapa , ja regexi käyttäytyy vastaavasti.

”Regexin” (jokerimerkkien) käyttäminen MS Wordissa ja Excelissä

Valitettavasti säännöllisiä lausekkeita ei tueta Wordissa ja Excelissä. Ne sallivat kuitenkin ”jokerimerkit”, jotka käyttäytyvät suunnilleen samalla tavalla, vaikka käytetyt symbolit ovat joskus erilaisia.

Wordissa jokerimerkkien avulla voidaan etsiä Advanced Find and Replace -toiminnon avulla. Tässä oppaassa , joka on Office-tukisivustolla, on tietoja siitä, kuinka navigoida tähän ominaisuuteen, miten jokerimerkit otetaan käyttöön ja mitä kukin jokin merkki tekee. p>

Excelissä ei ole heti selvää, kuinka hakea jokerimerkkien avulla, koska se ei ole osa yhtään hakuominaisuutta. Voit kuitenkin löytää soluja, jotka vastaavat hakulauseketta, joka sisältää jokerimerkkejä suodattamalla taulukot edistyneillä suodattimilla. Seuraa tätä opasta Officen tukisivustolta, josta löydät yleismerkkien käytön osana edistyneitä suodattimia Yleismerkkikriteerien alla.

Mistä pääset Excelin edistyneille suodattimille, jotka sallivat jokerimerkkien käytön

Regexin käyttäminen Pythonissa

re -kirjasto tarjotaan osana Python-perusasennusta. Tässä kirjastossa on monia toimintoja, joiden avulla voit analysoida ja käsitellä merkkijonoja säännöllisten lausekkeiden avulla.

Muutamia keskeisiä toimintoja ovat:

  • re.search ( kuvio, merkkijono, flags = 0 ) : Tämä etsii merkkijonossa ensimmäistä sijaintia, jossa kuvio (säännöllinen lausekkeesi) täsmää, palauttaen osumaobjektin kuvaa kuvaa tai Ei mitään, jos vastaavuutta ei löydy.
  • uudelleensovitus ( kuvio , string, flags = 0 ) : Toimii samalla tavalla kuin re.search (), paitsi että se etsii vain osumia, jotka alkavat merkkijono
  • re.split ( kuvio, merkkijono, flags = 0 ): Halkaisee merkkijono luetteloon hakutermillä pattern , kuten str.split () -menetelmä, mutta regexillä.
  • re.sub ( kuvio, repl, string, count = 0, flags = 0 ): Korvaa mallin esiintymät merkkijonossa repl : llä, jos repl on merkkijono, tai repl jos repl on funktio, joka käyttää argumenttina yhtä osumaobjektia

flags -parametri sallii sinun on määritettävä liput, kuten re.IGNORECASE , jotka muuttavat regex-malliesi käyttäytymistä vastaavasti.

Kun kirjoitat regex-kaavoja merkkijonoina pythonissa, on hyödyllistä käyttää raakoja merkkijonoja, koska niiden avulla voit käyttää erikoismerkkejä, kuten “\”, välttämättä niitä. Esimerkiksi:

  • pattern = “\\ bsk (y | ies) \\ b”

Käytä:

  • malli = r ”\ bsk (y | ies) \ b”
Esimerkki uudesta dokumentaatiosta, joka osoittaa regexin käytön positiivisella takaisinkävyllä

Täydellinen dokumentaatio re kirjasto löytyy täältä: https://docs.python.org/3/library/re.html # module-re

Hyvää vastaavuutta !!

Kuten näette, säännölliset lausekkeet voivat tehdä niin monista tehtävistä paljon helpompia, kun työskentelet tekstin kanssa. Jopa muutaman erikoismerkin oppiminen voi sallia niin monta uutta Etsi ja korvaa -työkalua. Monet tekstinkäsittelyohjelmat ja tekstieditorit ovat tunnistaneet niiden hyödyllisyyden ja mahdollistaneet säännöllisten lausekkeiden tuen tai ottaneet käyttöön omat ominaisuutensa tarjoamaan samanlaisia ​​toimintoja. Säännöllisten lausekkeiden tuntemus on kätevä työkalu työkalupakissa kaikille kirjoittajille, ohjelmistokehittäjille tai kaikille, jotka analysoivat tekstiä usein.

AI-paletti auttaa FMCG-yrityksiä tuoteinnovaatioissaan. Käytämme tekoälyä & Koneoppimista auttaaksemme FMCG-yrityksiä luomaan kuluttajille voittavia tuotteita.