Me Terminal: Përdorimi i shprehjeve të rregullta

Një nga gjërat që unë kam dashur gjithmonë në lidhje me terminalin Linux është ajo që ju mund të arrini duke përdorur shprehje të rregullta. Pavarësisht nëse kemi nevojë të gjejmë një tekst të komplikuar ose ta zëvendësojmë me diçka tjetër, përdorimi i shprehjeve të rregullta mund ta thjeshtojë shumë punën. Le të fillojmë nga fillimi:

KUJDES: Ky post është një dhimbje në gomar. Leximi i këtij postimi gjatë gjithë kohës mund të shkaktojë humbje të vetëdijes. Bëni pushime në mes ose këshillohuni me mjekun ose farmacistin tuaj përpara se të lexoni të gjithë postimin.

Çfarë është një shprehje e rregullt?

Një shprehje e rregullt është një seri personazhesh të veçantë që na lejojnë të përshkruajmë një tekst që duam ta gjejmë. Për shembull, nëse do të donim të kërkonim fjalën "linux" do të ishte e mjaftueshme ta fusnim atë fjalë në programin që po përdorim. Vetë fjala është një shprehje e rregullt. Deri më tani duket shumë e thjeshtë, por çka nëse dëshirojmë të gjejmë të gjithë numrat në një skedar të caktuar? Apo të gjitha rreshtat që fillojnë me një shkronjë të madhe? Në ato raste nuk mund të vendosni më një fjalë të thjeshtë. Zgjidhja është të përdorni një shprehje të rregullt.

Shprehje të rregullta vs modele skedarësh.

Para se të futemi në temën e shprehjeve të rregullta, unë dua të sqaroj një keqkuptim të zakonshëm në lidhje me shprehjet e rregullta. Një shprehje e rregullt nuk është ajo që ne vendosim si një parametër në komandat si rm, cp, etj për t'iu referuar skedarëve të ndryshëm në hard drive. Ky do të ishte një model skedari. Shprehjet e rregullta, edhe pse të ngjashme në atë që përdorin disa karaktere të zakonshëm, janë të ndryshme. Një model skedari shkarkohet kundër skedarëve në diskun e ngurtë dhe kthen ato që përputhen plotësisht me modelin, ndërsa një shprehje e rregullt lëshohet kundër një teksti dhe kthen linjat që përmbajnë tekstin e kërkuar. Për shembull, shprehja e rregullt që korrespondon me modelin *.* do te ishte dicka si ^.*\..*$

Llojet e shprehjeve të rregullta.

Jo të gjitha programet përdorin të njëjtat shprehje të rregullta. Jo shumë më pak. Ekzistojnë disa lloje të shprehjeve të rregullta pak a shumë standarde, por ka programe që ndryshojnë pak sintaksën, përfshijnë shtesat e tyre ose madje përdorin karaktere krejtësisht të ndryshëm. Prandaj, kur doni të përdorni shprehje të rregullta me një program që nuk e dini mirë, gjëja e parë që bëni është të shikoni manualin ose dokumentacionin e programit për të parë se si janë shprehjet e rregullta që ai njeh.

Së pari, ekzistojnë dy lloje kryesore të shprehjeve të rregullta, të cilat përmbahen në standardin POSIX, që është ajo që përdorin mjetet Linux. Ato janë shprehjet themelore dhe të zgjeruara të rregullta. Shumë nga komandat që punojnë me shprehje të rregullta, të tilla si grep ose sed, ju lejojnë të përdorni këto dy lloje. Unë do të flas për to më poshtë. Ekzistojnë gjithashtu shprehje të rregullta në stilin PERL, dhe pastaj ka programe si vim ose emacs që përdorin variante të këtyre. Në varësi të asaj që duam të bëjmë, mund të jetë më e përshtatshme të përdorim njërën ose tjetrën.

Testimi i shprehjeve të rregullta.

Sintaksa e shprehjeve të rregullta nuk është asgjë e parëndësishme. Kur duhet të shkruajmë një shprehje të rregullt të komplikuar do të jemi përpara një vargu personazhesh të veçantë të pamundur për t'u kuptuar në shikim të parë, kështu që për të mësuar se si t'i përdorësh ato është thelbësore që të kemi një mënyrë për të bërë të gjitha testet që duam dhe shohim rezultatet lehtësisht. Kjo është arsyeja pse unë tani do të vendos disa komanda me të cilat ne mund të bëjmë provat dhe të eksperimentojmë gjithçka që na nevojitet derisa të kemi dominuar shprehjet e rregullta.

E para është komanda grep. Kjo është komanda që do të përdorim më shpesh për të bërë kërkime. Sintaksa është si më poshtë:

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

Unë rekomandoj që gjithmonë të vendosni shprehje të rregullta në thonjëza të vetme, në mënyrë që guaska të mos ngrihet në të. Mënyra e parë është të gjesh një shprehje të rregullt në një skedar. E dyta lejon filtrimin e daljes së një komande përmes një shprehje të rregullt. Si parazgjedhje, grep përdor shprehjet themelore të rregullta. Opsioni -E është për përdorimin e shprehjeve të rregullta të zgjeruara.

Një hile që mund të na ndihmojë të shohim se si funksionojnë shprehjet e rregullta për të mundësuar përdorimin e ngjyrës në komandën grep. Në atë mënyrë, pjesa e tekstit që përputhet me shprehjen e rregullt që po përdorim do të theksohet. Për të aktivizuar ngjyrën në komandën grep, thjesht sigurohuni që ambienti të jetë i ndryshueshëm GREP_OPTIONS përmbajnë në vlerë --color, e cila mund të bëhet me këtë komandë:

GREP_OPTIONS=--color

Mund ta vendosim në .bashrc për ta pasur gjithmonë të aktivizuar.

Një mënyrë tjetër për të përdorur shprehjet e rregullta është duke përdorur komandën sed. Kjo është më e përshtatshme për zëvendësimin e tekstit, por mund të përdoret gjithashtu për kërkim. Sintaksa për të do të ishte kështu:

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

Komanda sed gjithashtu përdor shprehje themelore të rregullta si parazgjedhje, ju mund të përdorni shprehje të rregullta të zgjeruara me opsionin -r.

Një komandë tjetër që unë gjithashtu dua të emëroj është awk. Kjo komandë mund të përdoret për shumë gjëra, pasi ju lejon të shkruani skripte në gjuhën tuaj të programimit. Nëse ajo që duam është të kërkojmë një shprehje të rregullt në një skedar ose në daljen e një komande, mënyra për ta përdorur atë do të ishte si më poshtë:

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

Kjo komandë gjithmonë përdor shprehje të rregullta të zgjeruara.

Për të bërë testet tona do të na duhet gjithashtu një tekst që shërben si shembull për të kërkuar në të. Ne mund të përdorim tekstin e mëposhtëm:

- 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.

Ky është teksti që do të përdor për shembujt në pjesën tjetër të postimit, kështu që unë ju rekomandoj që ta kopjoni atë në një skedar që ta keni të dobishëm nga terminali. Ju mund të vendosni emrin që dëshironi. Unë e kam quajtur atë regex.

Fillimi i mësimit.

Tani kemi gjithçka që na duhet për të filluar testimin e shprehjeve të rregullta. Le të shkojmë pak nga pak. Do të vendos disa shembuj kërkimesh me shprehje të rregullta, në të cilat do të shpjegoj se për çfarë shërben secili personazh. Ata nuk janë shembuj shumë të mirë, por meqenëse do të kem një postim shumë të gjatë, nuk dua ta komplikoj më. Dhe thjesht do të gërvishtem sipërfaqen e asaj që mund të bëhet me shprehje të rregullta.

Më e thjeshtë nga të gjitha është kërkimi i një fjale specifike, për shembull, supozojmë se duam të gjejmë të gjitha linjat që përmbajnë fjalën "Linux". Kjo është më e lehtë, pasi vetëm duhet të shkruajmë:

grep 'Linux' regex

Dhe mund ta shohim rezultatin:

HarkLinux: https://wiki.archlinux.org/ Ark Linux: 11-03-2002 Nga Linux Rulez.

Këto janë tre linjat që përmbajnë fjalën "Linux", të cilat, nëse kemi përdorur mashtrimin e ngjyrave, do të shfaqen të theksuara. Vini re se ajo njeh fjalën që ne po kërkojmë edhe nëse është pjesë e një fjale më të gjatë si në "ArchLinux". Sidoqoftë, nuk thekson fjalën "linux" që shfaqet në URL "https://wiki.archlinux.org/". Kjo sepse aty shfaqet me shkronjën e vogël "l" dhe ne e kemi kërkuar me të madhe. Komanda grep ka mundësi për këtë, por unë nuk do të flas për to në një artikull mbi shprehjet e rregullta.

Me këtë provë të thjeshtë mund të nxjerrim përfundimin e parë:

  • Një karakter normal i vendosur në një shprehje të rregullt përputhet me vetveten.

Që do të thotë që nëse vendosni shkronjën "a" do të kërkojë shkronjën "a". Duket logjike, apo jo? 🙂

Tani supozoni se duam të kërkojmë fjalën "CentO" të ndjekur nga ndonjë karakter, por vetëm një karakter i vetëm. Për këtë mund të përdorim karakterin ".", I cili është një kartelë që përputhet me çdo karakter, por vetëm një:

grep 'CentO.' regex

Dhe rezultati është:

CentOS: http://wiki.centos.org/
CentO-të: 14-05-2004 03:32:38

Që do të thotë se përfshin "S" në "CentOS" edhe pse në një rast është i madh dhe në një tjetër i vogël. Nëse ndonjë personazh tjetër shfaqej në atë vend, ai gjithashtu do ta përfshinte atë. Ne tashmë kemi rregullin e dytë:

  • Karakteri "." përputhet me çdo karakter.

Nuk është më aq e parëndësishme sa dukej, por me këtë nuk mund të bëjmë shumë. Le të shkojmë pak më tej. Le të supozojmë se duam të gjejmë linjat në të cilat shfaqen viti 2002 dhe 2004. Ato duken si dy kërkime, por ato mund të bëhen menjëherë si kjo:

grep '200[24]' regex

Që do të thotë që ne duam të gjejmë numrin 200 të ndjekur nga 2 ose 4. Dhe rezultati është ky:

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

E cila na sjell te rregulli i tretë:

  • Karaktere të shumtë të mbyllur në kllapa përputhen me secilin nga personazhet brenda kllapave.

Kllapat japin më shumë lojë. ato gjithashtu mund të përdoren për të përjashtuar karakteret. Për shembull, supozoni se duam të gjejmë site ku shfaqet karakteri ":", por nuk ndiqet nga "/". Komanda do të ishte si kjo:

grep ':[^/]' regex

Simplyshtë thjesht një çështje e vendosjes së një "^" si personazhi i parë brenda kllapës. Më poshtë mund të vendosni të gjithë personazhet që dëshironi. Rezultati i kësaj komande të fundit është si më poshtë:

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-03-2002 Gentoo: 31/03/2002 CentOs: 14-05-2004 03:32:38 Debian: 16/08/1993 Ubuntu: 20/10/2004

Tani theksohen ":" prapa emrave distro, por jo ato në URL sepse URL-të kanë "/" pas tyre.

  • Vendosja e karakterit "^" në fillim të një kllapi përputhet me çdo karakter përveç karaktereve të tjerë në kllapa.

Një gjë tjetër që mund të bëjmë është të specifikojmë një sërë karakteresh. Për shembull, për të kërkuar ndonjë numër të ndjekur nga një "-" do të dukej kështu:

grep '[0-9]-' regex

Me këtë ne po specifikojmë një karakter midis 0 dhe 9 dhe pastaj një shenjë minus. Le të shohim rezultatin:

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

Mund të specifikoni vargje të shumëfishta brenda kllapave për të përzier edhe intervalin me karaktere të vetme.

  • Vendosja e dy karaktereve të ndara me "-" brenda kllapave përputhet me çdo karakter brenda intervalit.

Le të shohim tani nëse mund të zgjedhim pjesën e parë të URL-ve. Ai që thotë "http" ose "https". Ato ndryshojnë vetëm në "s" e fundit, prandaj le ta bëjmë si më poshtë:

grep -E 'https?' regex

Pikëpyetja përdoret për ta bërë karakterin në të majtë të tij opsional. Por tani ne kemi shtuar opsionin -E në komandë. Kjo sepse marrja në pyetje është një tipar i shprehjeve të rregullta të zgjeruara. Deri më tani po përdornim shprehje themelore të rregullta, prandaj nuk kishim nevojë të fusnim asgjë. Le të shohim rezultatin:

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/

Pra, ne tashmë kemi një rregull të ri:

  • Një personazh i ndjekur nga "?" përputhet me atë karakter ose me asnjë. Kjo është e vlefshme vetëm për shprehjet e rregullta të zgjeruara.

Tani do të gjejmë dy fjalë krejt të ndryshme. Le të shohim se si të gjejmë linjat që përmbajnë si fjalën "Debian" ashtu edhe "Ubuntu".

grep -E 'Debian|Ubuntu' regex

Me shiritin vertikal mund të ndajmë dy ose më shumë shprehje të rregullta të ndryshme dhe të kërkojmë linjat që përputhen me secilën prej tyre:

Debian: https://wiki.debian.org/
Ubuntu: https://wiki.ubuntu.com/
Debian: 16 / 08 / 1993
Ubuntu: 20 / 10 / 2004
  • Karakteri «|» shërben për të veçuar disa shprehje dhe ndeshje të rregullta me secilën prej tyre. Isshtë gjithashtu specifike për shprehjet e rregullta të zgjeruara.

Le te vazhdojme. Tani do të kërkojmë fjalën "Linux", por vetëm atje ku nuk është ngjitur me një fjalë tjetër në të majtë. Ne mund ta bëjmë atë kështu:

grep '\

Karakteri i rëndësishëm këtu është "<", por duhet të shpëtohet duke vendosur "\" para tij në mënyrë që grep ta interpretojë atë si një karakter të veçantë. Rezultati është si më poshtë:

Hark Linux: 11-03-2002 Nga Linux Rulez.

Mund të përdorni gjithashtu "\>" për të kërkuar fjalë që nuk janë pranë njëra-tjetrës. Le të shkojmë me një shembull. Le ta provojmë këtë komandë:

grep 'http\>' regex

Rezultati që prodhon është ky:

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

"Http" doli, por jo "https", sepse në "https" ka ende një karakter në të djathtë të "p" që mund të jetë pjesë e një fjale.

  • Karakteret "<" dhe ">" përputhen përkatësisht me fillimin dhe fundin e një fjale. Këta personazhe duhet të shpëtojnë në mënyrë që të mos interpretohen si karaktere fjalë për fjalë.

Ne shkojmë me gjërat pak më të komplikuara. Karakteri "+" përputhet me karakterin në të majtë të tij, përsëritur të paktën një herë. Ky karakter është i disponueshëm vetëm me shprehje të rregullta të zgjeruara. Me të mund të gjejmë, për shembull, sekuenca të disa numrave me radhë që fillojnë me ":".

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

Rezultati:

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

Numri 38 nënvizohet gjithashtu sepse fillon gjithashtu me ":".

  • Karakteri "+" përputhet me karakterin në të majtë të tij të përsëritur të paktën një herë.

Ju gjithashtu mund të kontrolloni numrin e përsëritjeve duke përdorur "{" dhe "}". Ideja është që të vendosim në kllapa një numër që tregon numrin e saktë të përsëritjeve që duam. Ju gjithashtu mund të vendosni një gamë. Le të shohim shembuj të dy rasteve.

Së pari ne do të gjejmë të gjitha sekuencat me katër shifra që ekzistojnë:

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

Vini re se mbajtësit e kaçurrelave duhet të shpëtojnë nëse përdorim shprehje themelore të rregullta, por jo nëse përdorim shprehje të zgjeruara. Me zgjatur do të ishte kështu:

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

Dhe rezultati në të dy rastet do të ishte ky:

ArchLinux: 11-03-2002
Gentoo: 31/03 /2002
CentOS: 14-05-2004 03:32:38
Debian: 16/08/1993
Ubuntu: 20/10 /2004
  • Karakteret "{" dhe "}" me një numër midis tyre përputhen me karakterin e mëparshëm që përsërisin numrin e specifikuar herë.

Tani shembulli tjetër me formatimin e teksteve. Supozoni se duam të gjejmë fjalë që kanë midis 3 dhe 6 shkronja të vogla. Ne mund të bëjmë sa vijon:

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

Dhe rezultati do të ishte ky:

- THEISTA de faqes wiki: TERCHLinux: https: //wiki.archlinux.org/ Gpastaj: https: //wiki.gentoo.org/wiki/Main_Pmoshë
CentOS: http: //wiki.cent.org/ Debian: https: //wiki.Debian.org/ OSEqorrsokak: https: //wiki.ubuntu.com/ - Fju mungon de lirim: TERCH Linux: 11-03-2002 Gpastaj: 31/03/2002 CentOs: 14-05-2004 03:32:38
Debian: 16 Uqorrsokak: 20/10/2004 DEshte Linux Rulez.

E cila, siç mund ta shihni, nuk ngjan shumë me atë që donim. Kjo sepse shprehja e rregullt i gjen shkronjat brenda fjalëve të tjera që janë më të gjata. Le të provojmë këtë version tjetër:

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

Rezultati:

- Lista e faqeve wiki: ArchLinux: https: //wiki.archlinux.org/ Gentoo: https: //wiki.gentoo.org/wiki/ Faqja Kryesore CentOS: http: //wiki.cent.org/ Debian: https: //wiki.Debian.org/ Ubuntu: https: //wiki.ubuntu.com/

Kjo tashmë duket më shumë si ajo që donim. Ajo që kemi bërë është që të kërkojmë që fjala të fillojë pak para shkronjës së parë dhe të mbarojë menjëherë pas shkronjës së fundit.

  • Karakteret "{" dhe "}" me dy numra midis tyre të ndara me presje përputhen me karakterin e mëparshëm përsëritën numrin e herë të treguar nga dy numrat.

Le të shohim tani një karakter që është një tip i mirë i "+". "Shtë "*" dhe funksionimi i tij është shumë i ngjashëm vetëm se përputhet me çdo numër të karaktereve, duke përfshirë zero. Kjo do të thotë, ajo bën të njëjtën gjë si "+" por nuk kërkon që karakteri në të majtë të saj të shfaqet në tekst. Për shembull, le të përpiqemi të kërkojmë ato adresa që fillojnë në wiki dhe përfundojnë në org:

grep 'wiki.*org' regex

Le të shohim rezultatin:

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

Perfecto.

Tani personazhi i fundit që do të shohim. Karakteri "\" përdoret për t'i shpëtuar karakterit në të djathtë të tij, në mënyrë që të humbasë kuptimin e tij të veçantë. Për shembull: Supozoni se duam të lokalizojmë linjat që përfundojnë në një pikë. Gjëja e parë që mund të na ndodhë mund të jetë kjo:

grep '.$' regex

Rezultati nuk është ai që ne po kërkojmë:

- Lista e faqeve 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/
- Data e lëshimit: Arch Linux: 11-03-2002
Gentoo: 31/03/2002
CentOs: 14-05-2004 03:32:38
Debian: 163
Ubuntu: 20/10/2004
Desde Linux Rulez.

Kjo është për shkak se "." përputhet me çdo gjë, në mënyrë që shprehja e rregullt të përputhet me karakterin e fundit të secilës rresht çfarëdo qoftë ajo. Zgjidhja është kjo:

grep '\.$' regex

Tani rezultati është ai që duam:

Desde Linux Rulez.

Loja gjatë

Edhe pse tema e shprehjeve të rregullta është aq komplekse sa do të jepja për një seri artikujsh, mendoj se tashmë ju kam dhënë mjaft dhimbje. Nëse keni arritur të arrini, urime. Dhe nëse i keni lexuar të gjitha këto në një ulje, merrni një aspirinë ose diçka tjetër, sepse nuk mund të jetë mirë.

Tani për tani kjo është e gjitha. Nëse ju pëlqen ky artikull, mbase mund të shkruani një tjetër. Në ndërkohë, unë ju rekomandoj që të provoni të gjitha shprehjet e rregullta në terminal për të parë qartë se si funksionojnë. Dhe mbani mend: Vetëm Chuck Norris mund të analizojë HTML duke përdorur shprehje të rregullta.


Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.

  1.   Ezekiel dijo

    Cila do të ishte jeta jonë pa regex?
    Artikulli është shumë i dobishëm, por do ta lexoj pak nga pak. Faleminderit shume.

    1.    heksborg dijo

      Faleminderit per koment Unë ende nuk besoj se artikulli im ka dalë. 🙂 Ka dalë me ndonjë gabim, por shpresoj se është i dobishëm. 🙂

  2.   Skalibur dijo

    Faleminderitssssssss! ..

    Shumë kohë më parë më duhej të studioja pak për shprehjet e rregullta .. .. Unë ju falënderoj për mësimdhënien .. dhe udhëzuesin hap pas hapi për të mësuar secilën prej tyre ..

    Shumë mirë! .. .. Unë do të marr atë aspirinë .. ee

    1.    heksborg dijo

      Ju mirepresim Guximi dhe se shprehjet e rregullta nuk munden me ty. 🙂

  3.   tanrax dijo

    Post fantastik! Punë e mrekullueshme. Pyes veten sa orë ju deshën

    1.    heksborg dijo

      LOL !! Pyetja është: Sa orë do të më duhej po të kisha thënë gjithçka që kisha ndërmend të thoja? Pafund !! 🙂

  4.   Tammuz dijo

    një gjë që nuk e dija, artikull i mirë!

    1.    heksborg dijo

      Faleminderit. Ashtë një kënaqësi ta ndajë atë me ju.

  5.   helena_ryuu dijo

    shpjegim i madh urime! vërtet e dobishme!

    1.    heksborg dijo

      Unë jam i lumtur që ju duket e dobishme. Prandaj është kënaqësi të shkruash.

  6.   anti dijo

    Kjo duhet të jetë diku e veçantë. Ashtu si të Veçantat, por që kanë një dobi shumë specifike. Mjaft e dobishme, megjithëse do të doja ta shikoja të zbatohej në Vim.

    1.    heksborg dijo

      Kjo është një pyetje për të pyetur veten. Kam në mendje edhe disa artikuj mbi shprehjet e rregullta. Dhe unë mund të flas për vim në to. Ka disa ndryshime nga ato që kam shpjeguar në këtë artikull. Ashtë çështje që të vazhdojmë me të. 🙂

  7.   Fernando dijo

    Mirë!

    Artikulli juaj është shumë i mirë, është kurioz, së fundmi (për momentin) kam publikuar në faqen time një hyrje që e kisha përgatitur prej disa ditësh ku kam mbledhur një listë me metakaraktere për shprehje të rregullta dhe disa shembuj. Dhe ka qenë e drejtë të hysh DesdeLinux dhe shikoni një hyrje në të njëjtën temë!

    Nëse është ndonjë ngushëllim, imi është SHUM SHUMUS PUSHTY

    Sigurisht regex janë një nga gjërat më të dobishme, unë zakonisht i përdor ato për të shkurtuar prodhimin e komandave dhe për të mbajtur pjesën që më intereson, dhe pastaj bashkëveproj me të në një skenar bash, për shembull. Unë gjithashtu i kam përdorur ato shumë në universitet, dhe ato kanë një rëndësi jetike në ndërtimin e përpiluesve (në përkufizimin e leksikografisë dhe analizuesve). Me pak fjalë, një botë e tërë.

    Përshëndetje dhe punë shumë shumë e mirë.

    1.    heksborg dijo

      Shumë falemnderit.

      Më pëlqente edhe artikulli juaj. Moreshtë më koncize se e imja. Mund të shërbejë si një referencë e shpejtë. Ashtë rastësi që i kemi shkruar në të njëjtën kohë. Ju mund të shihni se njerëzit janë të interesuar në këtë temë. 🙂

  8.   Elleri dijo

    Shprehje të rregullta për dummies =), tani është më e qartë për mua, nga rruga, një mënyrë për të pasur daljen me ngjyra për grep, është duke krijuar një alias në .bashrc alias grep = 'grep –color = gjithmonë', në rast funksionon për dikë.

    të fala

    1.    heksborg dijo

      E vërtetë Kjo është një mënyrë tjetër për ta bërë atë. Faleminderit për kontributin 🙂

  9.   KZKG ^ Gaara dijo

    O_O… pjesë e kontributit !!! O_O ...
    Faleminderit shume per postimin, po prisja dicka te tille per ca kohe lol, e le te hapur ta lexoj me qetesi ne shtepi me zero sherr per tu perqendruar lol.

    Faleminderit për artikullin, vërtet e bëj

    1.    heksborg dijo

      E dija që do të të pëlqente. LOL !! E vërteta është se shumë gjëra mungojnë, por unë tashmë kam një pjesë të dytë në mendje. 🙂

  10.   Eliecer Tates dijo

    Artikull i shkëlqyeshëm, sikur ta kisha lexuar dje, klasa që dhashë sot do të ishte edhe më e lehtë për studentët e mi!

    1.    heksborg dijo

      LOL !! Sa keq që u vonova, por jam i lumtur që është i dobishëm. 🙂

  11.   LeoToro dijo

    Më në fund !!!, super i mirë postimi .... Më në fund gjeta diçka që shpjegon qartë shprehjet e rregullta… ..

    1.    heksborg dijo

      Ka shumë informacion atje, por është më e vështirë të gjesh diçka që është e lehtë për tu kuptuar. Më vjen mirë që e plotësova atë boshllëk. 🙂

      Përshëndetje.

  12.   Shekspiri Rodos dijo

    Hej më duhet ndihmë, duhet të bëj një kërkim në / var / regjistra me formatin: yymmdd, dhe regjistrat janë si ky 130901.log -130901.log, duhet të kërkoj për të gjithë ata që janë nga 1 shtatori deri më 11 tetor, E vetmja gjë që arrita të bëja ishte të hiqja të gjithë shtatorin, por nuk di si të bëj zinxhirin e plotë:

    p.sh: 1309 [0-3] kthen regjistrat midis 1 deri 30 shtator, por nuk di si t'i marr gjithashtu në të njëjtin zinxhir nga 1 deri më 11 tetor.

    1.    heksborg dijo

      Ta bësh atë duke përdorur shprehje të rregullta është paksa e komplikuar. Më ndodh që diçka e tillë mund të funksionojë:

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

      Shtë një shprehje e rregullt e zgjeruar. Ju nuk thoni se cilin mjet po përdorni, kështu që unë nuk mund t'ju jap më shumë detaje.

      Gjithsesi mendoj se ky është rasti në vend që të përdorni shprehje të rregullta është më mirë ta bëni me find. Mund të provoni diçka si kjo:

      Gjej. -newermt '01 shtator '-a! -newermt '11 tetor '-print

      Fat Shpresoj se kjo mund t'ju ndihmojë.

  13.   çipo dijo

    Përshëndetje! Së pari, unë doja të ju falënderoj për punën tuaj pasi kjo faqe është brenda "top 3" të mia në faqet më të mira Linux.
    Unë po praktikoja dhe nuk e dija pse një RegExp në një numër telefoni nuk funksionoi për mua dhe ishte se po më mungonte "-E" (të cilën e kuptova falë këtij postimi).
    Doja t'ju pyesja nëse nuk dini një pdf ose faqe të mirë ku ka ushtrime në RegExp, megjithëse me pak imagjinatë mund të praktikoni t'i shpikni ato vetë.

    Përshëndetje, Pablo.

  14.   I qetë dijo

    Shumë mirë, sapo i lexova të gjitha, dhe po tani më duhet një aspirinë

  15.   Oskar dijo

    Shpjegimi më i mirë që kam parë për shprehjet e rregullta. Faleminderit autorit për ndarjen e kësaj vepre.

    Një përshëndetje.

  16.   Aleksader dijo

    Më pëlqeu shumë një shpjegim shumë i mirë