Ar termināli: izmantojot regulāras izteiksmes

Viena no lietām, ko vienmēr esmu mīlējis Linux terminālī, ir tas, ko jūs varat sasniegt, izmantojot regulāras izteiksmes. Neatkarīgi no tā, vai mums jāatrod sarežģīts teksts vai jāaizstāj ar ko citu, parasto izteiksmju izmantošana var ievērojami vienkāršot darbu. Sāksim ar sākumu:

BRĪDINĀJUMS: Šis ieraksts ir sāpes aizmugurē. Lasot šo ierakstu visu laiku, var zaudēt samaņu. Pirms visa ziņojuma lasīšanas veiciet pārtraukumus vai konsultējieties ar ārstu vai farmaceitu.

Kas ir regulārā izteiksme?

Regulāra izteiksme ir virkne īpašu rakstzīmju, kas ļauj mums aprakstīt tekstu, kuru mēs vēlamies atrast. Piemēram, ja mēs vēlētos meklēt vārdu "linux", būtu pietiekami ievietot šo vārdu mūsu izmantotajā programmā. Pats vārds ir regulāra izteiksme. Līdz šim tas šķiet ļoti vienkārši, bet ko darīt, ja mēs vēlamies atrast visus numurus noteiktā failā? Vai arī visas rindas, kas sākas ar lielo burtu? Šādos gadījumos jūs vairs nevarat ievietot vienkāršu vārdu. Risinājums ir izmantot regulāru izteiksmi.

Regulāras izteiksmes pret failu modeļiem.

Pirms ķeramies pie regulāru izteicienu tēmas, es vēlos noskaidrot izplatītu neizpratni par regulārām izteiksmēm. Regulārā izteiksme nav tas, ko mēs kā parametru ievietojam komandās, piemēram, rm, cp utt., Lai atsauktos uz dažādiem failiem cietajā diskā. Tas būtu faila modelis. Lai gan parastās izteiksmes ir līdzīgas, jo tajās tiek izmantotas dažas kopīgas rakstzīmes, tās atšķiras. Faila modelis tiek iedarbināts pret cietajā diskā esošajiem failiem un atgriež tos, kas pilnībā atbilst modelim, savukārt regulārā izteiksme tiek iedarbināta pret tekstu un atgriež rindas, kurās ir meklētais teksts. Piemēram, regulārā izteiksme, kas atbilst modelim *.* tas būtu kaut kas līdzīgs ^.*\..*$

Regulāro izteicienu veidi.

Ne visās programmās tiek izmantoti vieni un tie paši parastie izteicieni. Nav daudz mazāk. Pastāv vairāki vairāk vai mazāk standarta regulāro izteicienu veidi, taču ir programmas, kas nedaudz maina sintaksi, iekļauj savus paplašinājumus vai pat izmanto pilnīgi atšķirīgas rakstzīmes. Tāpēc, ja vēlaties izmantot regulāras izteiksmes ar programmu, kuru nezināt labi, vispirms ir jāpārbauda programmas rokasgrāmata vai dokumentācija, lai redzētu, kādi ir tās atpazītie regulārie izteicieni.

Pirmkārt, pastāv divi galvenie regulāro izteicienu veidi, kas ir ietverti POSIX standartā, ko izmanto Linux rīki. Tās ir regulārās izteiksmes un paplašinātās izteiksmes. Daudzas komandas, kas darbojas ar regulārām izteiksmēm, piemēram, grep vai sed, ļauj izmantot šos divus veidus. Par tiem es runāšu tālāk. Ir arī PERL stila regulārās izteiksmes, un pēc tam ir tādas programmas kā vim vai emacs, kas izmanto to variantus. Atkarībā no tā, ko mēs vēlamies darīt, var būt piemērotāk izmantot vienu vai otru.

Regulāru izteiksmju pārbaude.

Regulāro izteicienu sintakse nemaz nav niecīga. Kad mums būs jāraksta sarežģīta regulārā izteiksme, mēs būsim priekšā no īpaša rakstura virknes, kuras no pirmā acu uzmetiena nav iespējams saprast, tāpēc, lai uzzinātu, kā tās izmantot, ir jābūt iespējai veikt visus vēlamos un redzamos testus rezultātus viegli. Tāpēc es tagad ievietošu vairākas komandas, ar kurām mēs varam veikt testus un eksperimentēt visu nepieciešamo, līdz dominē regulārās izteiksmes.

Pirmais ir komanda grep. Šī ir komanda, kuru mēs visbiežāk izmantosim meklēšanai. Sintakse ir šāda:

grep [-E] 'REGEX' FICHERO
COMANDO | grep [-E] 'REGEX'

Es iesaku vienmēr likt regulāras izteiksmes vienās pēdiņās, lai apvalks netiktu pie tā. Pirmais veids ir atrast regulāru izteiksmi failā. Otrais ļauj filtrēt komandas izvadi, izmantojot regulāru izteiksmi. Pēc noklusējuma grep izmanto regulāras izteiksmes. Opcija -E ir paredzēta paplašinātu regulāru izteiksmju izmantošanai.

Triks, kas var mums palīdzēt redzēt, kā darbojas regulārās izteiksmes, ļauj komandā grep izmantot krāsu. Tādā veidā tiks izcelta tā teksta daļa, kas atbilst regulārajai izteiksmei, kuru izmantojam. Lai aktivizētu krāsu grep komandā, vienkārši pārliecinieties, ka vides mainīgais GREP_OPTIONS satur vērtību --color, ko var izdarīt ar šo komandu:

GREP_OPTIONS=--color

Mēs to varam ievietot .bashrc, lai vienmēr to aktivizētu.

Cits regulāro izteicienu izmantošanas veids ir komandas sed izmantošana. Tas ir vairāk piemērots teksta aizstāšanai, bet to var izmantot arī meklēšanai. Sintakse tam būtu šāda:

sed -n[r] '/REGEX/p' FICHERO
COMANDO | sed -n[r] '/REGEX/p'

Komanda sed pēc noklusējuma izmanto arī regulāras pamata izteiksmes, paplašinātās regulārās izteiksmes var izmantot ar opciju -r.

Vēl viena komanda, kuru es arī vēlos nosaukt, ir awk. Šo komandu var izmantot daudzām lietām, jo ​​tā ļauj rakstīt skriptus savā programmēšanas valodā. Ja mēs vēlamies meklēt regulāru izteiksmi failā vai komandas izvadā, veids, kā to izmantot, būtu šāds:

awk '/REGEX/' FICHERO
COMANDO | awk '/REGEX/'

Šī komanda vienmēr izmanto paplašinātās regulārās izteiksmes.

Lai veiktu testus, mums būs nepieciešams arī teksts, kas kalpo kā piemērs, lai tajā meklētu. Mēs varam izmantot šādu tekstu:

- Lista de páginas wiki:

ArchLinux: https://wiki.archlinux.org/
Gentoo: https://wiki.gentoo.org/wiki/Main_Page
CentOS: http://wiki.centos.org/
Debian: https://wiki.debian.org/
Ubuntu: https://wiki.ubuntu.com/

- Fechas de lanzamiento:

Arch Linux: 11-03-2002
Gentoo: 31/03/2002
CentOs: 14-05-2004 03:32:38
Debian: 16/08/1993
Ubuntu: 20/10/2004

Desde Linux Rulez.

Šis ir teksts, kuru es izmantošu piemēros pārējā ziņojumā, tāpēc es iesaku jums to kopēt failā, lai tas būtu ērti no termināla. Jūs varat ievietot vēlamo vārdu. Es to esmu saucis par regex.

Sākuma stunda.

Tagad mums ir viss nepieciešamais, lai sāktu testēt regulāras izteiksmes. Ejam pamazām. Es ievietošu vairākus meklējumu piemērus ar regulārām izteiksmēm, kuros es paskaidrošu, kam katrs raksturs ir domāts. Tie nav īpaši labi piemēri, bet, tā kā man būs ļoti garš ieraksts, es vairs nevēlos to sarežģīt. Un es tikai ieskrāpēšu virsmu tam, ko var izdarīt ar regulārām izteiksmēm.

Visvienkāršākais ir meklēt noteiktu vārdu, piemēram, pieņemsim, ka mēs vēlamies meklēt visas rindas, kurās ir vārds "Linux". Tas ir vienkāršākais, jo mums ir jāraksta tikai:

grep 'Linux' regex

Un mēs varam redzēt rezultātu:

ArkaLinux: https://wiki.archlinux.org/ Arch Linux: 11-03-2002 No plkst Linux Rulez.

Šīs ir trīs rindas, kurās ir vārds "Linux", kas, ja mēs esam izmantojuši krāsu triku, parādīsies izcelti. Ņemiet vērā, ka tas atpazīst meklēto vārdu, pat ja tas ir daļa no garāka vārda, piemēram, sadaļā "ArchLinux". Tomēr tas neizceļ vārdu "linux", kas parādās URL "https://wiki.archlinux.org/". Tas ir tāpēc, ka tas tur parādās ar mazajiem burtiem "l", un mēs to meklējām ar lielajiem burtiem. Grep komandai ir iespējas to darīt, taču es par tiem nerunāšu rakstā, kas attiecas uz regulārajām izteiksmēm.

Ar šo vienkāršo testu mēs varam izdarīt pirmo secinājumu:

  • Normāls raksturs, kas ievietots regulārā izteiksmē, sakrīt ar sevi.

Tas nozīmē, ka, ja jūs ievietojat burtu "a", tas meklēs burtu "a". Tas šķiet loģiski, vai ne? 🙂

Tagad pieņemsim, ka mēs vēlamies meklēt vārdu "CentO", kam seko jebkura rakstzīme, bet tikai viena rakstzīme. Tam mēs varam izmantot rakstzīmi ".", Kas ir aizstājējzīme, kas atbilst jebkuram rakstzīmei, bet tikai vienai:

grep 'CentO.' regex

Un rezultāts ir:

CentOS: http://wiki.centos.org/
centiem: 14-05-2004 03:32:38

Tas nozīmē, ka tas ietver "S" "CentOS", lai gan vienā gadījumā tas ir lielais un citā mazais. Ja tajā vietā parādījās kāds cits varonis, tas to arī iekļautu. Mums jau ir otrais noteikums:

  • Raksturs "." atbilst jebkuram rakstzīmei.

Tas vairs nav tik triviāls, kā šķita, taču ar to mēs neko daudz nevaram izdarīt. Ejam mazliet tālāk. Pieņemsim, ka mēs vēlamies atrast rindas, kurās parādās 2002. un 2004. gads. Šķiet, ka tie ir divi meklējumi, taču tos var izdarīt uzreiz šādi:

grep '200[24]' regex

Tas nozīmē, ka mēs vēlamies atrast skaitli 200, kam seko 2 vai 4. Un rezultāts ir šāds:

ArchLinux: 11-03-2002
Gentoo: 31.2002
CentO: 14-05-2004 03:32:38
Ubuntu: 20/10/2004

Kas mūs noved pie trešā noteikuma:

  • Vairākas iekavās ievietotas rakstzīmes atbilst jebkurai iekavās esošajai rakstzīmei.

Kronšteini dod lielāku spēli. tos var izmantot arī, lai izslēgtu rakstzīmes. Piemēram, pieņemsim, ka mēs vēlamies atrast vietnes, kurās parādās rakstzīme ":", bet pēc kurām nav "/". Komanda būtu šāda:

grep ':[^/]' regex

Vienkārši runa ir par "^" ievietošanu iekavās kā pirmo rakstzīmi. Zemāk varat ievietot visas vajadzīgās rakstzīmes. Šīs pēdējās komandas rezultāts ir šāds:

ArchLinux: https://wiki.archlinux.org/
Gentoo: https://wiki.gentoo.org/wiki/Main_Page
CentOS: http://wiki.centos.org/
Debian: https://wiki.debian.org/
Ubuntu: https://wiki.ubuntu.com/
Arch Linux: 11 Gentoo: 31. CentOs: 14-05-2004 03:32:38 Debian: 16. Ubuntu: 20/10/2004

Tagad aiz izplatīšanas nosaukumiem ir izcelti ":", bet ne URL vietrāži, jo vietrāžiem URL ir "/" aiz tiem.

  • "^" Rakstzīmes ievietošana iekavas sākumā atbilst jebkurai rakstzīmei, izņemot citas iekavas esošās rakstzīmes.

Vēl viena lieta, ko mēs varam darīt, ir norādīt rakstzīmju diapazonu. Piemēram, lai meklētu jebkuru skaitli, kam seko "-", tas izskatās šādi:

grep '[0-9]-' regex

Ar to mēs norādām rakstzīmi no 0 līdz 9 un pēc tam mīnus zīmi. Apskatīsim rezultātu:

ArchLinux: 11-03-2002. gada CentOs: 14-05-2004 03: 32: 38

Iekavās varat norādīt vairākus diapazonus, lai pat sajauktu diapazonus ar atsevišķām rakstzīmēm.

  • Divas rakstzīmes, kas atdalītas ar "-", iekavās atbilst jebkurai rakstzīmei diapazonā.

Tagad redzēsim, vai mēs varam atlasīt URL pirmo daļu. Tas, kas saka “http” vai “https”. Tie atšķiras tikai ar pēdējiem “s”, tāpēc darīsim to šādi:

grep -E 'https?' regex

Jautājuma zīme tiek izmantota, lai padarītu rakstzīmi pa kreisi izvēles. Bet tagad komandai esam pievienojuši opciju -E. Tas ir tāpēc, ka pratināšana ir paplašinātu regulāru izteicienu iezīme. Līdz šim mēs izmantojām regulāras pamata izteiksmes, tāpēc neko nevajadzēja likt. Apskatīsim rezultātu:

ArchLinux: https: //wiki.archlinux.org/ Gentoo: https: //wiki.gentoo.org/wiki/Main_Page CentOS: http: //wiki.centos.org/ Debian: https: //wiki.debian.org/ Ubuntu: https: //wiki.ubuntu.com/

Tātad mums jau ir jauns noteikums:

  • Varonis, kam seko "?" neatbilst šim raksturam vai nav neviena. Tas ir derīgs tikai paplašinātajām regulārajām izteiksmēm.

Tagad mēs atradīsim divus pilnīgi atšķirīgus vārdus. Apskatīsim, kā atrast rindas, kurās ir gan vārds "Debian", gan "Ubuntu".

grep -E 'Debian|Ubuntu' regex

Ar vertikālo joslu mēs varam atdalīt divus vai vairākus dažādus regulārus izteicienus un meklēt līnijas, kas atbilst jebkurai no tām:

Debian: https://wiki.debian.org/
Ubuntu: https://wiki.ubuntu.com/
Debian: 16 / 08 / 1993
Ubuntu: 20 / 10 / 2004
  • Raksts "|" To lieto, lai atdalītu vairākus regulāros izteicienus un saskaņotu ar kādu no tiem. Tas ir raksturīgs arī paplašinātajām regulārajām izteiksmēm.

Turpināsim. Tagad mēs meklēsim vārdu "Linux", bet tikai tur, kur tas nav iestrēdzis citam vārdam pa kreisi. Mēs to varam izdarīt šādi:

grep '\

Svarīgais raksturs šeit ir "<", taču no tā jāizbēg, ieliekot priekšā "\", lai greps to interpretētu kā īpašu rakstzīmi. Rezultāts ir šāds:

Arka Linux: 11-03-2002 No plkst Linux Rulez.

Varat arī izmantot "\>", lai meklētu vārdus, kas nav tieši blakus viens otram. Pieņemsim piemēru. Izmēģināsim šo komandu:

grep 'http\>' regex

Tā saražotā produkcija ir šāda:

CentOS: http: //wiki.centos.org/

Iznāca "Http", bet ne "https", jo "https" pa labi no "p" joprojām ir raksturs, kas var būt daļa no vārda.

  • Rakstzīmes "<" un ">" atbilst attiecīgi vārda sākumam un beigām. Šīs rakstzīmes ir jāizbēg, lai tās netiktu interpretētas kā burtiskas rakstzīmes.

Mēs ejam ar nedaudz sarežģītākām lietām. "+" Raksturs atbilst rakstzīmei pa kreisi, atkārtojot vismaz vienu reizi. Šis raksturs ir pieejams tikai ar paplašinātām regulārām izteiksmēm. Ar to mēs varam meklēt, piemēram, vairāku secīgu skaitļu secību, kas sākas ar ":".

grep -E ':[0-9]+' regex

Rezultāts:

CentOs: 14. gada 05.-2004. 03: 32: 38

Skaitlis 38 ir arī izcelts, jo tas sākas arī ar ":".

  • "+" Raksturs atbilst rakstzīmei pa kreisi, atkārtojot vismaz vienu reizi.

Varat arī kontrolēt atkārtojumu skaitu, izmantojot “{” un “}”. Ideja ir ievietot iekavās skaitli, kas norāda precīzu vēlamo atkārtojumu skaitu. Varat arī ievietot diapazonu. Apskatīsim divu gadījumu piemērus.

Vispirms mēs atrodam visas četrciparu secības, kas ir:

grep '[0-9]\{4\}' regex

Ņemiet vērā, ka no cirtainajām lencēm ir jāizbēg, ja izmantojam regulāras pamata izteiksmes, bet ne tad, ja izmantojam paplašinātas. Ar pagarinājumu tas būtu šādi:

grep -E '[0-9]{4}' regex

Rezultāts abos gadījumos būtu šāds:

ArchLinux: 11-03-2002
Gentoo: 31.2002
CentO: 14-05-2004 03:32:38
Debian: 16/08/1993
Ubuntu: 20/10 /2004
  • Rakstzīmes "{" un "}" ar skaitli starp tām atbilst iepriekšējai rakstzīmei, kas atkārtota norādītajā reižu skaitā.

Tagad otrs piemērs ar lencēm. Pieņemsim, ka mēs vēlamies atrast vārdus, kuru burti ir no 3 līdz 6. Mēs varētu rīkoties šādi:

grep '[a-z]\{3,6\}' regex

Rezultāts būtu šāds:

- Lista de lappuses Wiki: TORCHLinux: https: //Wiki.Archlinux.org/ Gtad: https: //Wiki.gentoo.org/Wiki/Main_Pvecums
CENTOS: http: //Wiki.CentOS.org/ Debian: https: //Wiki.Debian.org/ VAIsacelšanās: https: //Wiki.Ubuntu.com/ - Ftev pietrūkst de Atbrīvošanas: TORCH Linux: 11-03-2002 Gtad: 31. CENTOs: 14-05-2004 03:32:38
Debian: 16. Usacelšanās: 20. DTas ir Linux Rulez.

Kas, kā redzat, neizskatās pēc tā, kā mēs vēlējāmies. Tas ir tāpēc, ka regulārā izteiksme atrod burtus citu vārdu garumā. Izmēģināsim šo citu versiju:

grep '\<[a-z]\{3,6\}\>' regex

Rezultāts:

- Lappušu saraksts Wiki: ArchLinux: https: //Wiki.archlinux.org/ Gentoo: https: //Wiki.gentoo.org/Wiki/ Main_Page CentOS: http: //Wiki.CentOS.org/ Debian: https: //Wiki.Debian.org/ Ubuntu: https: //Wiki.Ubuntu.com/

Tas jau vairāk izskatās pēc tā, ko mēs vēlējāmies. Mēs esam prasījuši, lai vārds sākas tieši pirms pirmā burta un beidzas tieši pēc pēdējā burta.

  • Rakstzīmes "{" un "}", starp kurām ir divi cipari, atdalīti ar komatu, atbilst iepriekšējai rakstzīmei, kas atkārto to skaitu skaitu, ko norāda abi cipari.

Tagad aplūkosim rakstzīmi, kas ir "+" galvenā. Tas ir "*", un tā darbība ir ļoti līdzīga, tikai tas sakrīt ar jebkuru rakstzīmju skaitu, ieskaitot nulli. Tas ir, tas darbojas tāpat kā "+", bet neprasa, lai rakstā, kas atrodas pa kreisi, parādītos tekstā. Piemēram, mēģināsim meklēt tās adreses, kas sākas no wiki un beidzas ar org:

grep 'wiki.*org' regex

Apskatīsim rezultātu:

ArchLinux: https: //wiki.archlinux.org/ Gentoo: https: //wiki.gentoo.org/ wiki / Main_Page CentOS: http: //wiki.centos.org/ Debian: https: //wiki.debian.org/

Perfecto.

Tagad pēdējais varonis, kuru mēs redzēsim. Raksts "\" tiek izmantots, lai izvairītos no rakstzīmes pa labi, lai tas zaudētu savu īpašo nozīmi. Piemēram: Pieņemsim, ka mēs vēlamies atrast līnijas, kas beidzas ar punktu. Pirmais, kas mums varētu rasties, varētu būt šāds:

grep '.$' regex

Rezultāts nav tas, ko mēs meklējam:

- Wiki lapu saraksts:
ArchLinux: https://wiki.archlinux.org/
Gentoo: https://wiki.gentoo.org/wiki/Main_Page
CentOS: http://wiki.centos.org/
Debian: https://wiki.debian.org/
Ubuntu: https://wiki.ubuntu.com/
- Izlaišanas datumi: Arch Linux: 112
Gentoo: 312
CentOs: 14-05-2004 03:32:38
Debian: 163
Ubuntu: 204
Desde Linux Rulez.

Tas ir tāpēc, ka "." sakrīt ar jebko, tāpēc regulārā izteiksme sakrīt ar katras rindas pēdējo rakstzīmi neatkarīgi no tā, kāds tas ir. Risinājums ir šāds:

grep '\.$' regex

Tagad rezultāts ir tas, ko mēs vēlamies:

Desde Linux Rulez.

Spēle Vairāk

Lai gan regulāro izteicienu priekšmets ir tik sarežģīts, ka es veltītu rakstu sēriju, es domāju, ka es jums jau esmu sagādājis pietiekami daudz sāpju. Ja jums ir izdevies ierasties, apsveicu. Un, ja jūs visu izlasījāt vienā piegājienā, paņemiet aspirīnu vai kaut ko citu, jo tas nevar būt labs.

Pagaidām tas arī viss. Ja jums patīk šis raksts, varbūt varat uzrakstīt citu. Tikmēr iesaku jums izmēģināt visas regulārās izteiksmes terminālā, lai skaidri redzētu, kā tās darbojas. Un atcerieties: HTML parsēt var tikai Čaks Noriss, izmantojot regulāras izteiksmes.


28 komentāri, atstājiet savus

Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.

  1.   Ezequiel teica

    Kāda būtu mūsu dzīve bez regex?
    Raksts ir ļoti noderīgs, bet es to pamazām lasīšu. Liels paldies.

    1.    Hexborg teica

      Paldies par komentāru. Es joprojām neticu, ka mans raksts ir iznācis. 🙂 Ir iznākusi zināma kļūda, bet es ceru, ka tā ir noderīga. 🙂

  2.   Skalibura teica

    Paldies youssssssss! ..

    Pirms kāda laika man bija nedaudz jāpēta par regulārajām izteiksmēm .. ..Paldies par mācīšanu .. un soli pa solim, lai uzzinātu katru no tām ..

    Ļoti labi! .. .. es dabūšu to aspirīnu .. ee

    1.    Hexborg teica

      Nav par ko. Drosme un regulārie izteicieni nevar būt ar jums. 🙂

  3.   Tanraks teica

    Fantastisks ieraksts! Lielisks darbs. Nez, cik stundas tev pagāja 😀

    1.    Hexborg teica

      LOL !! Jautājums ir: Cik stundas man būtu vajadzīgs, ja es būtu pateicis visu, ko gribēju teikt? Bezgalīgs !! 🙂

  4.   Tammuz teica

    viena lieta, ko nezināju, labs raksts!

    1.    Hexborg teica

      Paldies. Prieks dalīties tajā ar jums.

  5.   helena_ryuu teica

    lielisks izskaidrojums. apsveicu! tiešām noderīgi!

    1.    Hexborg teica

      Es priecājos, ka jums tas likās noderīgs. Tāpēc ir prieks rakstīt.

  6.   antidempinga teica

    Tam vajadzētu būt kaut kur īpašam. Tāpat kā piedāvātie, bet tiem ir ļoti specifiska lietderība. Diezgan noderīgi, lai gan es vēlētos, lai tas tiktu piemērots Vim.

    1.    Hexborg teica

      Tas ir jautājums par sev uzdošanu. Man prātā vēl daži raksti par regulārām izteiksmēm. Un es varētu runāt par vim tajās. Tam ir dažas atšķirības no tā, ko es paskaidroju šajā rakstā. Tas ir jautājums, kā ar to tikt galā. 🙂

  7.   Fernando teica

    Labi!

    Muy bueno tu artículo, es curioso, recientemente (ahora mismo) he publicado en mi web una entrada que llevaba preparando desde hace unos días donde he recogido una lista de metacaracteres para las expresiones regulares y algunos ejemplos. ¡Y ha sido justo entrar en DesdeLinux y ver una entrada sobre la misma temática!

    Ja tas ir kāds mierinājums, manējais ir DAUDZ PUSĪKĀK US

    Noteikti regex ir viena no visnoderīgākajām lietām, es parasti tās izmantoju, lai apgrieztu komandu izvadi un saglabātu mani interesējošo daļu, un pēc tam mijiedarbojos ar to, piemēram, bash skriptā. Esmu tos daudz izmantojis arī universitātē, un tiem ir būtiska nozīme sastādītāju izveidē (leksikogrāfisko un parseru definīcijā). Īsāk sakot, visa pasaule.

    Sveiciens un ļoti ļoti labs darbs.

    1.    Hexborg teica

      Liels paldies.

      Man patika arī tavs raksts. Tas ir kodolīgāks nekā mans. Tas var kalpot kā ātra uzziņa. Tā ir sagadīšanās, ka mēs tos esam rakstījuši vienlaikus. Var redzēt, ka cilvēki interesējas par šo tēmu. 🙂

  8.   Elērijs teica

    Regulāras izteiksmes manekeniem =), tagad man ir skaidrāk, starp citu, viens veids, kā iegūt izeju ar krāsu grep, ir izveidot aizstājvārdu .bashrc aizstājvārdā grep = 'grep –color = vienmēr', ja tas kādam darbojas .

    Sveicieni

    1.    Hexborg teica

      Patiesi. Tas ir vēl viens veids, kā to izdarīt. Paldies par ieguldījumu. 🙂

  9.   KZKG ^ Gaara teica

    O_O ... gabals !!! O_O ...
    Liels paldies par ierakstu, es kādu laiku gaidīju kaut ko tādu lol, es atstāju to atvērtu, lai mierīgi to izlasītu mājās ar nulles problēmu, lai koncentrētos lol.

    Paldies par rakstu, es tiešām to daru 😀

    1.    Hexborg teica

      Es zināju, ka tev tas patiks. LOL !! Patiesība ir tāda, ka daudzas lietas trūkst, bet man jau ir padomā otrā daļa. 🙂

  10.   Eljērs Teitss teica

    Lielisks raksts, ja vien es to būtu lasījis vakar, klase, kuru šodien pasniedzu, būtu pat vēl vienkāršāka maniem skolēniem!

    1.    Hexborg teica

      LOL !! Žēl, ka es kavēju, bet priecājos, ka tas ir noderīgi. 🙂

  11.   LeoToro teica

    Visbeidzot !!!, super laba ziņa .... Es beidzot atradu kaut ko tādu, kas skaidri izskaidro regulāros izteicienus ... ..

    1.    Hexborg teica

      Tur ir daudz informācijas, taču grūtāk ir atrast kaut ko viegli saprotamu. Es priecājos, ka aizpildīju šo plaisu. 🙂

      Sveicieni.

  12.   Šekspīrs Rodas teica

    Hei, man ir vajadzīga palīdzība, man ir jāmeklē / var / logs formātā: yymmdd, un žurnāli ir tādi kā 130901.log -130901.log, man jāmeklē visi tie, kas atrodas laikā no 1. septembra līdz 11. oktobrim. Vienīgais, ko man izdevās izdarīt, bija noņemt visu septembri, bet es nezinu, kā darīt visu ķēdi:

    piemēram: 1309 [0-3] atgriež žurnālus no 1. līdz 30. septembrim, bet es nezinu, kā to iegūt arī tajā pašā ķēdē no 1. līdz 11. oktobrim.

    1.    Hexborg teica

      To darīt, izmantojot regulāras izteiksmes, ir nedaudz sarežģīti. Man šķiet, ka kaut kas līdzīgs varētu darboties:

      13(09[0-3]|10(0|1[01]))

      Tā ir paplašināta regulārā izteiksme. Jūs nesakāt, kuru rīku izmantojat, tāpēc es nevaru jums sniegt sīkāku informāciju.

      Jebkurā gadījumā, es domāju, ka tas tā ir, tā vietā, lai izmantotu regulāras izteiksmes, labāk to darīt ar meklēšanu. Jūs varat izmēģināt kaut ko līdzīgu šim:

      atrast. -newermt '01 sep '-a! -jaunais '11 okt. 'izdruka

      Veiksme. Ceru, ka tas var jums palīdzēt.

  13.   čipo teica

    Sveiki! Pirmkārt, es gribēju pateikties par jūsu darbu, jo šī lapa ir manā labāko top 3 labāko Linux vietņu sarakstā.
    Es praktizējos un nezināju, kāpēc RegExp uz tālruņa numuru man nedarbojās, un man trūka “-E” (ko es sapratu, pateicoties šai ziņai).
    Es gribēju jums pajautāt, vai nezināt labu PDF failu vai vietni, kur ir vingrinājumi vietnē RegExp, lai gan ar nelielu iztēli jūs varat praktizēt to izdomāšanu pats.

    Sveiciens, Pablo.

  14.   Nomierīgs teica

    Ļoti labi, es to visu vienkārši izlasīju, un jā, tagad man vajag aspirīnu 🙂

  15.   Óscar teica

    Labākais regulāro izteicienu skaidrojums, ko esmu redzējis. Es pateicos autoram par dalīšanos šajā darbā.

    Sveiciens.

  16.   Aleksaders teica

    Man ļoti patika ļoti labs paskaidrojums