Kas yra įprastas posakis?
„Regex“ arba reguliarūs posakiaiyra šablonas, atitinkantis žymėjimą programuotojai naudoti norint ieškoti tam tikrų šablonų tekste. Reguliarūs posakiai gali ieškoti beveik bet ko, atsižvelgiant į tai, kaip juos struktūrizuojate; juos visur naudoja programuotojai, nes jie yra neįkainojami, nes padeda kompiuteriams greitai rūšiuoti duomenis ir filtruoti nesąmones, kurios kitaip galėtų sukelti klaidų.
Reguliarūs posakiai dažniausiai atrodo baisūs, ypač ne programuotojams. Tiesiog pažvelk į tai:
[a-zA-Z0-9 _. + -] + @ [a-zA-Z0-9 _-] + \. [a-zA-Z0-9 _.-] +
Realiai tai nėra taip blogai; kad atitinka el. pašto adresus. Kaip pamatysite, išraiškas galima suskirstyti į atskirus simbolius, kurie visi nurodo programai, ko reikia ieškoti.
Reguliarūs posakiai yra beveik universalūs. Tas pats generolas sintaksė taikoma visomis kalbomis, tik čia ir ten šiek tiek varijuojant. Šiame vadove yra tiek „Python“, tiek „JavaScript“ pavyzdžių, taip pat paprasto senojo regexo. Jei dirbate kita kalba, nesijaudinkite. Beveik viskas bus taikoma ir jūsų pasirinktai kalbai.
„Regex“ pagrindai
Techniškai nėra daug dalykų, kurių negalima laikyti įprastais posakiais, nes pažodinės teksto eilutės yra tikrai paprastos. Jei „abcde“ naudotumėte kaip įprastą išraišką, programavimo kalba ieškotų būtent tos eilutės.
Pirmasis dinamiškesnis atitikimo simbolis, į kurį reikia pažvelgti, yra „.“ charakteris. Šiame kontekste taškinis simbolis yra pakaitos simbolis. Jei ieškosite su juo, jūsų programa grąžins bet kokį rastą simbolį kaip atitikmenį.
Taigi, ką daryti, jei norite ieškoti pažodinio taško? Tai irgi nesunku. Jei norite naudoti pažodinį tašką, prieš jį pridėkite atgalinį brūkšnį, pvz.: „\“.
„Backslash“ veikėjai
Tačiau atbulinis brūkšnys čia vaidina daug daugiau vaidmenų. Daugumoje pagrindinių regex simbolių yra atgalinis brūkšnys.
Pažvelkite į keletą pavyzdžių:
- \ d: skaitmenys nuo 0 iki 9
- \ w: „Žodžių simbolių“ raidės, skaitmenys ir pabraukimas
- \ s: tarpai, tarpai, naujosios eilutės ir įprasti tarpai
Jei naudosite didelę raidę su bet kuria iš šių, gausite atvirkščiai. Pavyzdžiui, „\ D“ suteikia viską, išskyrus skaitmenis.
Užsiėmimai
The atgalinio brūkšnio simboliai yra geri, bet jie vis tiek yra griežti. Paprastai norėsite sutapti su raidėmis, skaičiais arba keliais specialiaisiais simboliais.
Padėkite simbolius, kuriuos norite suderinti, laužtiniuose skliaustuose „[]“, ir jūsų programa atitiks bet kurį iš jų. Tai vadinama regex klase.
[abcd1234]
Aukščiau pateiktas pavyzdys vis dar neefektyvus. Vietoj to galite naudoti brūkšnį norėdami nurodyti diapazoną; pavyzdžiui, visos mažosios raidės:
[a-z]
Jūs taip pat galite išvardyti diapazonus. Ši išraiška atitinka visas raides ir skaitmenis:
[a-zA-Z0-9]
Jei ketinate įtraukti brūkšnį į savo simbolių rinkinį, užklijuokite jį pabaigoje, kad jo neįvertintumėte. Tai veikia ir su kitais specialiaisiais personažais.
[a-zA-Z0-9 _. + -]
Kaip ir atgalinio brūkšnio simbolius, čia taip pat galite gauti atvirkštinį rezultatą. Kurso pradžioje įdėkite „^“, kad pašalintumėte juos iš savo rezultatų. Tai pašalins skaitmenis ir keletą specialiųjų simbolių iš rezultatų:
[^0-9_+.-]
Grupės
Grupės naudoja skliaustų rinkinį, kad suskirstytų jūsų išraišką. Jie grupuoja duomenis, leisdami jūsų programai juos taikyti ir naudoti. Kai programa pašalina http://' iš žiniatinklio adreso, tam pasiekti naudojama regex grupės. Regex leidžia jai taikyti tam tikrus kriterijus, o grupės - atskirus skyrius.
Grupės taip pat leidžia pasirinkti vieną ar kitą modelį. Jie naudoja vieną „|“ elgtis kaip „arba“ išraiškoje. Žemiau pateikta išraiška atitiks bet kurį iš šių: .com, .org, .net, .edu arba .gov.
\. (com | org | net | edu | gov)
Kiekybiniai koeficientai
Kiekybiniai rodikliai yra būtent tokie, kokie jie skamba. Jie pasako išraiškos kiekį, kurio ieškote. Šie galimi kiekybiniai koeficientai:
- *: Nulis ar daugiau
- +: Vienas ar daugiau
- ?: Nulis arba vienas
- {3}: suma skliaustuose
Bet kurį iš šių kvantorių padėkite simbolio ar klasės, kurios dydį norite nurodyti, gale. Šiame pavyzdyje ieškomi standartiniai septynių skaitmenų telefono numeriai:
\ d {3} [. * -] \ d {3} [. * -] \ d {4}
Inkarai ir ribos
Naudodami įprastus posakius galite ieškoti šablonų pagal jų padėtį teksto eilutėje arba aplink žodį.
Tai yra jūsų pagrindinės parinktys:
- ^: Stygos pradžia
- $: Eilutės pabaiga
- \ b: žodžio riba (žodžio pradžia arba pabaiga)
Jei norite rasti tik eilučių, prasidedančių raide, galite pabandyti:
^ [a-zA-Z]
Tarkime, kad norite rasti tik žodį „tai“, o ne žodžius, kuriuose yra I ir T raidės; ten naudosite žodžių ribas.
\ b (i | I) t \ b
Paskutinės mintys
Reguliarūs posakiai gali sutaupyti daug galvos skausmo programuojant. Įsivaizduokite, kad bandote parašyti logiką, kad įvykdytumėte bet kurį iš šio straipsnio pavyzdžių. Tai būtų baisi netvarka. Kai jums patiks su jais, tikriausiai pastebėsite, kad tikrai naudojatės regexo galia ir lankstumu.