टर्मिनलसह: नियमित अभिव्यक्ती वापरणे

लिनक्स टर्मिनलबद्दल मला नेहमीच आवडलेल्या गोष्टींपैकी एक म्हणजे आपण नियमित अभिव्यक्ती वापरुन साध्य करू शकता. आम्हाला गुंतागुंतीचा मजकूर शोधण्याची किंवा त्यास दुसर्‍या कशाची जागा घेण्याची गरज आहे की नाही, नियमित अभिव्यक्ती वापरल्याने नोकरी मोठ्या प्रमाणात सुलभ होऊ शकते. सुरुवातीस प्रारंभ करूया:

चेतावणी: हे पोस्ट गाढवामध्ये एक वेदना आहे. हे पोस्ट सर्व वेळ वाचल्याने चेतना कमी होऊ शकते. संपूर्ण पोस्ट वाचण्यापूर्वी तोडण्यासाठी किंवा डॉक्टरांचा सल्ला घ्या.

नियमित अभिव्यक्ती म्हणजे काय?

नियमित अभिव्यक्ती ही खास वर्णांची एक मालिका आहे जी आम्हाला शोधू इच्छित असलेल्या मजकूराचे वर्णन करण्यास अनुमती देते. उदाहरणार्थ, जर आपल्याला "लिनक्स" हा शब्द शोधायचा असेल तर तो शब्द आपण वापरत असलेल्या प्रोग्राममध्ये ठेवणे पुरेसे आहे. शब्द स्वतः एक नियमित अभिव्यक्ती आहे. आतापर्यंत हे अगदी सोपे दिसते आहे, परंतु एखाद्या विशिष्ट फाईलमध्ये सर्व क्रमांक शोधायचे असल्यास काय करावे? किंवा सर्व अक्षरे ज्या मोठ्या अक्षराने सुरू होतात? अशा परिस्थितीत आपण यापुढे साधा शब्द ठेवू शकत नाही. उपाय म्हणजे नियमित अभिव्यक्ती वापरणे.

नियमित अभिव्यक्ति विरुद्ध फाइल नमुने.

आम्ही नियमित अभिव्यक्तीच्या विषयात जाण्यापूर्वी, मला नियमित अभिव्यक्तींविषयी एक सामान्य गैरसमज दूर करायचा आहे. हार्ड डिस्कवरील विविध फाईल्सचा संदर्भ घेण्यासाठी आपण आरएम, सीपी इत्यादी कमांड्स मध्ये पॅरामीटर म्हणून ठेवलेले नियमित अभिव्यक्ती नसते. ते फाईल पॅटर्न असेल. नियमित अभिव्यक्ती, जरी ती काही सामान्य अक्षरे वापरतात त्याप्रमाणेच, भिन्न आहेत. हार्ड डिस्कवरील फायली विरूद्ध फाईल नमुना उडाला जातो आणि त्या नमुन्याशी पूर्णपणे जुळणार्‍या फाइल्स परत करतो, तर नियमित अभिव्यक्ती एखाद्या मजकुराच्या विरोधात उडाली जाते आणि शोधलेल्या मजकूराच्या ओळी परत मिळवते. उदाहरणार्थ, नमुना अनुरुप नियमित अभिव्यक्ती *.* ते असं काहीतरी असेल ^.*\..*$

नियमित अभिव्यक्तीचे प्रकार.

सर्व प्रोग्राम्स समान नियमित अभिव्यक्ती वापरत नाहीत. जास्त कमी नाही. बरेच किंवा कमी प्रमाणित नियमित अभिव्यक्तींचे बरेच प्रकार आहेत, परंतु असे प्रोग्राम आहेत जे वाक्यरचना किंचित बदलतात, त्यांचे स्वत: चे विस्तार समाविष्ट करतात किंवा अगदी भिन्न वर्ण वापरतात. म्हणूनच, जेव्हा आपण एखाद्या प्रोग्रामसह आपल्याला नियमित अभिव्यक्ती वापरू इच्छित असतात ज्या आपण चांगल्या प्रकारे परिचित नसता तेव्हा आपण त्याद्वारे ओळखल्या जाणार्‍या नियमित अभिव्यक्ती कशा असतात ते पाहण्यासाठी प्रोग्रामची मॅन्युअल किंवा दस्तऐवजीकरण पहाणे आवश्यक आहे.

सर्व प्रथम, नियमित अभिव्यक्तीचे दोन मुख्य प्रकार आहेत, जे पॉसिक्स मानक द्वारे व्यापलेले आहेत, जे लिनक्स साधने वापरतात. ते मूलभूत आणि विस्तारित नियमित अभिव्यक्ती आहेत. नियमित अभिव्यक्तींसह कार्य करणार्‍या बर्‍याच आज्ञा, जसे की ग्रेप किंवा सेड, आपल्याला हे दोन प्रकार वापरण्याची परवानगी देतात. मी त्यांच्याबद्दल खाली चर्चा करेन. येथे पीईआरएल-शैलीतील नियमित अभिव्यक्ती देखील आहेत आणि त्यानंतर व्हिम किंवा ईमॅकसारखे प्रोग्राम देखील आहेत ज्यांचे रूपे वापरतात. आम्हाला काय करायचे आहे यावर अवलंबून एक किंवा दुसरा वापरणे अधिक योग्य असू शकते.

नियमित अभिव्यक्तीची चाचणी घेत आहे.

नियमित अभिव्यक्तिंचा वाक्यरचना क्षुल्लक नसते. जेव्हा आम्हाला एखादी गुंतागुंतीची नियमित अभिव्यक्ती लिहावी लागते तेव्हा प्रथम दृष्टीक्षेपात आपल्याला समजण्यास अशक्य असलेल्या विशिष्ट वर्णांच्या स्ट्रिंगसमोर असू शकते, म्हणून त्यांचा वापर कसा करावा हे शिकण्यासाठी आपल्यास इच्छित सर्व चाचण्या करण्याचा मार्ग असणे आवश्यक आहे आणि परिणाम सहजपणे पाहणे आवश्यक आहे. म्हणूनच आता मी अनेक कमांडस ठेवणार आहे ज्याद्वारे आम्ही नियमित अभिव्यक्ती वर्चस्व होईपर्यंत चाचण्या करू शकतो आणि आपल्याला आवश्यक असलेल्या सर्व गोष्टींचा उपयोग करू शकतो.

पहिली एक ग्रीप कमांड आहे. हीच कमांड आम्ही सर्च करण्यासाठी वारंवार वापरतो. वाक्यरचना खालीलप्रमाणे आहे:

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

मी नेहमी एकल कोट्समध्ये नियमित अभिव्यक्ती ठेवण्याची शिफारस करतो जेणेकरून शेल त्याकडे जाऊ नये. पहिला मार्ग म्हणजे फाईलमध्ये नियमित अभिव्यक्ती शोधणे. दुसरा नियमित अभिव्यक्तीद्वारे कमांडचे आउटपुट फिल्टर करण्यास परवानगी देतो. डीफॉल्टनुसार, ग्रेप मूलभूत नियमित अभिव्यक्ती वापरते. -E पर्याय विस्तारित नियमित अभिव्यक्ती वापरण्यासाठी आहे.

ग्रीक कमांडमधील रंगाचा वापर सक्षम करण्यासाठी नियमित अभिव्यक्ती कशी कार्य करते हे आम्हाला मदत करणारी युक्ती. अशा प्रकारे, आम्ही वापरत असलेल्या नियमित अभिव्यक्तीशी जुळणार्‍या मजकूराचा भाग हायलाइट केला जाईल. ग्रेप कमांड मधील रंग सक्रिय करण्यासाठी, फक्त पर्यावरण व्हेरिएबल हे सुनिश्चित करा GREP_OPTIONS मूल्य असू --color, जे या आदेशासह केले जाऊ शकते:

GREP_OPTIONS=--color

ते सदैव चालू ठेवण्यासाठी आम्ही ते .bashrc मध्ये ठेवू शकतो.

नियमित अभिव्यक्ती वापरण्याचा दुसरा मार्ग म्हणजे कमांड वापरणे. मजकूर पुनर्स्थित करण्यासाठी हे अधिक योग्य आहे, परंतु शोधण्यासाठी देखील वापरले जाऊ शकते. त्यासाठीचे वाक्यरचना असे असेलः

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

पूर्वनिर्धारितपणे सेड कमांड मूलभूत नियमित अभिव्यक्त्यांचा वापर करते, आपण -r पर्यायासह विस्तारित नियमित अभिव्यक्ती वापरू शकता.

आणखी एक कमांड ज्याला मला नाव देखील घ्यायचे आहे ते अस्ताव्यस्त आहे. ही आज्ञा बर्‍याच गोष्टींसाठी वापरली जाऊ शकते, कारण ती आपल्याला आपल्या स्वतःच्या प्रोग्रामिंग भाषेत स्क्रिप्ट लिहिण्याची परवानगी देते. जर आपल्याला पाहिजे असेल तर फाईलमध्ये किंवा कमांडच्या आऊटपुटमध्ये नियमित अभिव्यक्ती शोधणे, त्याचा वापर करण्याचा मार्ग खालीलप्रमाणे आहेः

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

ही आज्ञा नेहमी विस्तारित नियमित अभिव्यक्ती वापरते.

आमच्या चाचण्या करण्यासाठी आम्हाला मजकूराची देखील आवश्यकता असेल जी त्यामध्ये शोधण्यासाठी एक उदाहरण म्हणून काम करेल. आम्ही खालील मजकूर वापरू शकतो:

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

हा मजकूर आहे जो मी उर्वरित पोस्टमधील उदाहरणांसाठी वापरेन, म्हणून मी टर्मिनलवर सुलभतेने फाइल्समध्ये कॉपी करण्याची शिफारस करतो. आपण इच्छित नाव ठेवू शकता. मी त्याला रेजेक्स म्हटले आहे.

आरंभ धडा.

आता आपल्याकडे नियमित अभिव्यक्तीची चाचणी सुरू करण्यासाठी आवश्यक असलेली प्रत्येक गोष्ट आपल्याकडे आहे. चला जरासे जाऊ. मी नियमित अभिव्यक्तींसह शोधांची अनेक उदाहरणे ठेवणार आहे ज्यात मी प्रत्येक वर्ण म्हणजे काय हे स्पष्ट करेल. ती फार चांगली उदाहरणे नाहीत, परंतु माझं खूप लांब पोस्ट असणार असल्याने मी यापुढे गुंतागुंत करू इच्छित नाही. आणि मी फक्त नियमित अभिव्यक्तीद्वारे काय करता येईल याची पृष्ठभाग स्क्रॅच करणार आहे.

सर्वांमध्ये सर्वात सोपा म्हणजे विशिष्ट शब्द शोधणे, उदाहरणार्थ, समजा आपल्याला "लिनक्स" हा शब्द असलेल्या सर्व ओळी शोधायच्या आहेत. हे सर्वात सोपा आहे, कारण आपल्याला फक्त लिहावे लागेल:

grep 'Linux' regex

आणि आम्ही परिणाम पाहू शकतो:

कमानlinux: https://wiki.archlinux.org/ कमान linux: 11-03-2002 पासून linux रुलेझ.

या तीन ओळींमध्ये "लिनक्स" हा शब्द आहे ज्या आपण रंग ट्रिक वापरल्या असतील तर ठळकपणे दिसतील. लक्षात घ्या की हा शब्द "आर्चीलिनक्स" प्रमाणे एखाद्या दीर्घ शब्दाचा भाग असला तरीही आम्ही ज्या शब्दात आपण शोधत आहोत त्याला ते ओळखते. तथापि, यात "लिनक्स" हा शब्द हायलाइट होत नाही जो URL "https://wiki.archlinux.org/" मध्ये आढळतो. कारण तेथे तो लोअरकेस "एल" सह दिसतो आणि आम्ही अपरकेसमध्ये शोधला आहे. ग्रीप कमांडकडे यासाठी पर्याय आहेत, परंतु मी त्यांच्याविषयी नियमित अभिव्यक्तीवरील लेखात बोलणार नाही.

या सोप्या चाचणीद्वारे आपण पहिला निष्कर्ष काढू शकतो:

  • नियमित अभिव्यक्तीमध्ये ठेवलेले सामान्य पात्र स्वतःच जुळते.

काय म्हणायचे आहे की आपण "अ" अक्षर ठेवले तर ते "अ" अक्षरासाठी शोधतील. हे तार्किक दिसते, बरोबर? 🙂

आता समजा आपल्याला कुठलेही वर्ण नसून "सेंटो" हा शब्द शोधायचा आहे, परंतु केवळ एक एकल वर्ण आहे. यासाठी आम्ही "." कॅरेक्टर वापरू शकतो, जे वाईल्डकार्ड कोणत्याही वर्णांशी जुळते, परंतु फक्त एक:

grep 'CentO.' regex

आणि याचा परिणाम असाः

CentOS: http://wiki.centos.org/
शतके: 14-05-2004 03:32:38

ज्याचा अर्थ असा आहे की त्यात "सेन्टोस" मध्ये "एस" समाविष्ट आहे जरी एका बाबतीत ते अपरकेस आहे आणि दुसर्‍या लोअरकेसमध्ये. त्या ठिकाणी इतर कोणतेही पात्र दिसले तर त्यातही त्या समाविष्ट होतील. आमच्याकडे आधीपासून दुसरा नियम आहे:

  • पात्र "." कोणत्याही वर्णेशी जुळते.

हे जितके दिसते तितके क्षुल्लक नाही, परंतु यासह आपण बरेच काही करू शकत नाही. चला जरा पुढे जाऊया. समजा आपण 2002 आणि 2004 मधील ओळी शोधू इच्छित आहात. ते दोन शोधांसारखे दिसत आहेत, परंतु त्या एकाच वेळी केल्या जाऊ शकतात:

grep '200[24]' regex

याचा अर्थ असा आहे की आम्हाला 200 किंवा त्यानंतर 2 किंवा 4 क्रमांकाची शोधायची आहे आणि याचा परिणाम असा आहेः

आर्क लिनक्स: 11-03-2002
जेंटू: 31/03 /2002
शतके: 14-05-2004 03:32:38
Ubuntu: 20/10/2004

ज्याने आम्हाला तिसर्‍या नियमात आणले:

  • कंसात बंद केलेले अनेक वर्ण कंसातील कोणत्याही वर्णांशी जुळतात.

कंस अधिक नाटक देतात. ते वर्ण वगळण्यासाठी देखील वापरले जाऊ शकतात. उदाहरणार्थ, समजा ज्या ठिकाणी ":" वर्ण दिसतो परंतु "/" त्यानंतर नाही अशा साइट्स शोधायच्या आहेत. ही आज्ञा अशी आहेः

grep ':[^/]' regex

कंसात पहिले अक्षर म्हणून "^" ठेवण्याची ही गोष्ट आहे. आपण इच्छित सर्व वर्ण खाली ठेवू शकता. या शेवटच्या आदेशाचा परिणाम खालीलप्रमाणे आहे:

आर्चलिनक्स: 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 जेंटू: 31/03/2002 सेंटो: 14-05-2004 03:32:38 डेबियन: 16/08/1993 उबंटू: 20/10/2004

आता डिस्ट्रो नावांच्या मागे ":" हायलाइट केला आहे, परंतु यूआरएलमधील एक नाही कारण URL त्यांच्या नंतर "/" आहे.

  • कंस सुरूवातीस "^" वर्ण ठेवणे कंसातील इतर वर्णांव्यतिरिक्त कोणत्याही वर्णांशी जुळते.

आपण करू शकत असलेली आणखी एक गोष्ट म्हणजे वर्णांची श्रेणी निर्दिष्ट करणे. उदाहरणार्थ, "-" पाठोपाठ कोणतीही संख्या शोधण्यासाठी हे असे दिसेल:

grep '[0-9]-' regex

यासह आम्ही 0 आणि 9 आणि नंतर वजा चिन्हांमधील वर्ण निर्दिष्ट करीत आहोत. चला निकाल पाहूयाः

आर्क लिनक्स: 11-03-2002 सेंटो: 14-05-2004: 03: 32: 38

एकल वर्णांसह अगदी श्रेणी मिसळण्यासाठी कंसात अनेक श्रेणी निर्दिष्ट केल्या जाऊ शकतात.

  • कंसात "-" ने विभक्त दोन वर्ण ठेवणे श्रेणीमधील कोणत्याही वर्णांशी जुळते.

आम्ही URL चा पहिला भाग निवडू शकतो की नाही ते पाहू. एक जो "HTTP" किंवा "https" म्हणतो. ते फक्त अंतिम "से" मध्ये भिन्न आहेत, म्हणून हे खालीलप्रमाणे करू:

grep -E 'https?' regex

वर्ण चिन्ह डाव्या पर्यायी बनविण्यासाठी प्रश्नचिन्ह वापरले जाते. परंतु आता आपण कमांडमध्ये -E पर्याय समाविष्ट केला आहे. हे कारण म्हणजे विस्तारित नियमित अभिव्यक्तीचे वैशिष्ट्य आहे. आतापर्यंत आम्ही मूलभूत नियमित अभिव्यक्ती वापरत होतो, म्हणून काहीही ठेवण्याची आवश्यकता नव्हती. चला निकाल पाहूयाः

आर्कलिनक्स: https: //wiki.archlinux.org/ जेंटूः https: //wiki.gentoo.org/wiki/Main_Page CentOS: http: //wiki.centos.org/ डेबियन: https: //wiki.debian.org/ उबंटू: https: //wiki.ubuntu.com/

आमच्याकडे आधीपासून एक नवीन नियम आहे:

  • "" नंतर एक पात्र? त्या वर्णेशी जुळते किंवा काहीही नाही. हे केवळ विस्तारित नियमित अभिव्यक्तींसाठी वैध आहे.

आता आपण दोन पूर्णपणे भिन्न शब्द शोधणार आहोत. "डेबियन" आणि "उबंटू" हा शब्द असलेल्या ओळी कशा शोधायच्या ते पाहूया.

grep -E 'Debian|Ubuntu' regex

उभ्या बारसह आम्ही दोन किंवा अधिक भिन्न नियमित अभिव्यक्ती विभक्त करू शकतो आणि त्यापैकी कोणत्याहीशी जुळणार्‍या रेषा शोधू शकतो:

डेबियन: https://wiki.debian.org/
उबंटू: https://wiki.ubuntu.com/
डेबियन: 16 / 08 / 1993
उबंटू: 20 / 10 / 2004
  • वर्ण «|» अनेक नियमित अभिव्यक्ती आणि त्यापैकी कोणत्याहीशी जुळण्यासाठी वेगळे करते. हे विस्तारित नियमित अभिव्यक्तींकरिता देखील विशिष्ट आहे.

चला पुढे जाऊया. आता आपण "लिनक्स" हा शब्द शोधणार आहोत, परंतु केवळ जिथे तो डावीकडे दुसर्‍या शब्दाला चिकटलेला नाही. आम्ही हे असे करू शकतो:

grep '\

येथे महत्त्वाचे पात्र "<" आहे, परंतु त्यास पुढे "putting" ठेवून बचावणे आवश्यक आहे जेणेकरुन ग्रीप त्याचे स्पष्टीकरण एक विशेष पात्र म्हणून करेल. परिणाम खालीलप्रमाणे आहेः

कमान linux: 11-03-2002 पासून linux रुलेझ.

आपण एकमेकांच्या पुढे नसलेले शब्द शोधण्यासाठी "\>" देखील वापरू शकता. चला एक उदाहरण घेऊ. चला या कमांडचा प्रयत्न करू.

grep 'http\>' regex

त्याचे उत्पादन असे आहेः

सेंटोसः http: //wiki.centos.org/

"एचटीपीपी" बाहेर आले, परंतु "https" नाही, कारण "https" मध्ये अद्याप "पी" च्या उजवीकडे एक वर्ण आहे जो शब्दाचा भाग असू शकतो.

  • "<" आणि ">" वर्ण अनुक्रमे शब्दाच्या सुरूवातीस आणि शेवटी जुळतात. हे वर्ण निसटणे आवश्यक आहे जेणेकरून त्यांचे शब्दशः वर्ण म्हणून वर्णन केले जाऊ नये.

आम्ही जरा जास्त जटिल गोष्टींसह जातो. "+" वर्ण त्याच्या डावीकडील वर्णांशी जुळत कमीतकमी एकदा पुनरावृत्ती होते. हे पात्र केवळ विस्तारित नियमित अभिव्यक्तींसह उपलब्ध आहे. त्याद्वारे आम्ही शोधू शकतो, उदाहरणार्थ, ":" ने सुरू होणार्‍या सलग अनेक संख्येचे अनुक्रम.

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

निकाल:

शतके: 14-05-2004 03: 32: 38

38 क्रमांक देखील हायलाइट केला आहे कारण त्याची सुरूवात ":" ने देखील होते.

  • "+" वर्ण त्याच्या डावीकडील वर्णांशी जुळत कमीतकमी एकदा पुनरावृत्ती होते.

आपण "{" आणि "}" वापरून पुनरावृत्तीची संख्या देखील नियंत्रित करू शकता. कंसात अशी एक संख्या ठेवण्याची कल्पना आहे जी आपल्याला पाहिजे असलेल्या पुनरावृत्तीची अचूक संख्या दर्शविते. आपण एक श्रेणी देखील ठेवू शकता. चला दोन प्रकरणांची उदाहरणे पाहूया.

प्रथम आम्ही तेथे असलेल्या चार-अंकी क्रम शोधू:

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

लक्षात घ्या की जर आपण मूलभूत नियमित अभिव्यक्ती वापरत असाल तर कुरळे कंस निसटणे आवश्यक आहे. विस्तारासह हे असे असेल:

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

आणि दोन्ही प्रकरणांमध्ये याचा परिणाम असा होईलः

आर्क लिनक्स: 11-03-2002
जेंटू: 31/03 /2002
शतके: 14-05-2004 03:32:38
Debian: 16/08/1993
उबंटू: 20/10 /2004
  • त्यामधील संख्येसह "{" आणि "}" वर्ण आधीच्या वर्णांशी जुळत निर्दिष्ट वेळेची पुनरावृत्ती करतात.

आता कंसात असलेले दुसरे उदाहरण. समजा आपल्याला 3 ते 6 लोअरकेस अक्षरे असलेले शब्द शोधायचे आहेत. आम्ही पुढील गोष्टी करू शकतो:

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

आणि याचा परिणाम असा होईलः

- एलista de दुवाs विकी: TOआरएचLइनक्स: https: //विकी.आर्कलिनक्स.संस्था/ जीप्रवेश: https: //विकी.हळू.संस्था/विकी/Mआइन_Pवय
Centओएस: http: //विकी.शतक.संस्था/ डीइबियन: https: //विकी.डेबियन.संस्था/ किंवाबंटू: https: //विकी.उबंटू.कॉम/ - एफतू चुकवले de लाँच करा: TOआरएच Lइनक्स: 11-03-2002 जीप्रवेश: 31/03/2002 सीentOs: 14-05-2004 03:32:38
Dइबियन: 16/08/1993 यूबंटू: 20/10/2004 डीहे आहे Lइनक्स Rulez.

जे आपण पाहू शकता, आपल्याला हवे त्यासारखे दिसत नाही. त्याचे कारण असे की नियमित अभिव्यक्तीला इतर शब्दांमधील अक्षरे जास्त लांब असतात. चला ही इतर आवृत्ती वापरुन पाहू:

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

निकाल:

- पृष्ठांची यादी विकी: आर्चलिनक्स: https: //विकी.archlinux.संस्था/ जेंटू: https: //विकी.हळू.संस्था/विकी/ मेन_पेज सेंटोस: http: //विकी.शतक.संस्था/ डेबियन: https: //विकी.डेबियन.संस्था/ उबंटू: https: //विकी.उबंटू.कॉम/

हे आधीपासूनच आम्हाला हवे असलेल्यासारखे दिसते. आपण काय केले हे आवश्यक आहे की हा शब्द पहिल्या अक्षराच्या अगदी आधी सुरू झाला पाहिजे आणि शेवटच्या नंतर संपला पाहिजे.

  • "{" आणि "}" अक्षरे त्या दरम्यान दोन संख्येसह स्वल्पविरामाने विभक्त केली मागील वर्ण दोन संख्यांद्वारे दर्शविलेल्या संख्येची पुनरावृत्ती करते.

आता "+" चे मुख्य असलेले एक पात्र पाहूया. हे "*" आहे आणि त्याचे ऑपरेशन केवळ इतकेच साम्य आहे की ते शून्यासह कितीही वर्णांशी जुळते. म्हणजेच हे "+" सारखेच करते परंतु मजकूरात दिसण्यासाठी त्याच्या डावीकडील वर्ण आवश्यक नाही. उदाहरणार्थ, विकीपासून सुरू झालेले आणि org वर समाप्त होणारे पत्ते शोधण्याचा प्रयत्न करूया

grep 'wiki.*org' regex

चला निकाल पाहूयाः

आर्कलिनक्स: https: //विकी.आर्कलिनक्स.ऑर्ग/ जेंटू: https: //wiki.gentoo.org/ विकी / मेनस्पेज सेंटोस: http: //wiki.centos.org/ डेबियन: https: //विकी.डेबियन.ऑर्ग/

परिपूर्ण

आता आपण पहात असलेले शेवटचे पात्र. "\" वर्ण त्याच्या उजवीकडील पात्रातून निसटण्यासाठी वापरला जातो जेणेकरून त्याचा विशिष्ट अर्थ गमावला. उदाहरणार्थ: समजा आपल्याला एका बिंदूसह समाप्त होणार्‍या रेषा शोधायच्या आहेत. आम्हाला उद्भवू शकणारी पहिली गोष्ट ही असू शकते:

grep '.$' regex

आम्ही ज्याचा शोध घेत आहोत त्याचा परिणाम नाहीः

- विकी पानांची यादी:
आर्कलिनक्स: https://wiki.archlinux.org/
जेंटू: https://wiki.gentoo.org/wiki/Main_Page
CentOS: http://wiki.centos.org/
डेबियन: https://wiki.debian.org/
उबंटू: https://wiki.ubuntu.com/
- रीलिझ तारखा: आर्च लिनक्स: 11-03-2002
जेंटू: 31/03/2002
CentOs: 14-05-2004 03:32:38
डेबियन: 16/08/1993
उबंटू: 20/10/2004
Desde Linux रुलेझ.

हे कारण "." कोणत्याही गोष्टीशी जुळते, जेणेकरून नियमित अभिव्यक्ती प्रत्येक ओळीच्या शेवटच्या अक्षराशी जुळते जे आहे ते. उपाय हा आहेः

grep '\.$' regex

आता परिणाम आपल्याला हवा तोच आहेः

Desde Linux रुलेझ.

खेळ संपला

जरी नियमित अभिव्यक्तीचा विषय इतका गुंतागुंतीचा आहे की मी मालिकेच्या मालिकेसाठी देईन, परंतु मला वाटते की मी तुम्हाला आधीच वेदना दिली आहे. आपण आगमन व्यवस्थापित केल्यास, अभिनंदन. आणि जर आपण हे सर्व एका बैठकीत वाचले असेल तर अ‍ॅस्पिरिन किंवा काहीतरी घ्या, कारण ते चांगले होऊ शकत नाही.

आत्तापर्यंत एवढेच. आपल्याला हा लेख आवडत असल्यास, कदाचित आपण दुसरा लेख लिहू शकता. दरम्यान, मी तुम्हाला शिफारस करतो की ते कार्य कसे करतात हे स्पष्ट करण्यासाठी टर्मिनलमधील सर्व नियमित अभिव्यक्त्यांचा प्रयत्न करा. आणि लक्षात ठेवाः केवळ चक नॉरिस नियमित अभिव्यक्ती वापरुन HTML विश्लेषित करू शकते.


28 टिप्पण्या, आपल्या सोडा

आपली टिप्पणी द्या

आपला ई-मेल पत्ता प्रकाशित केला जाणार नाही. आवश्यक फील्ड चिन्हांकित केले आहेत *

*

*

  1. डेटा जबाबदार: मिगुएल Áन्गल गॅटन
  2. डेटाचा उद्देशः नियंत्रण स्पॅम, टिप्पणी व्यवस्थापन.
  3. कायदे: आपली संमती
  4. डेटा संप्रेषण: कायदेशीर बंधन वगळता डेटा तृतीय पक्षास कळविला जाणार नाही.
  5. डेटा संग्रहण: ओकेन्टस नेटवर्क (EU) द्वारा होस्ट केलेला डेटाबेस
  6. अधिकारः कोणत्याही वेळी आपण आपली माहिती मर्यादित, पुनर्प्राप्त आणि हटवू शकता.

  1.   इझेक्विएल म्हणाले

    रेजेक्सशिवाय आपले आयुष्य काय असेल?
    लेख खूप उपयुक्त आहे, परंतु मी हे थोडेसे वाचेन. खूप खूप धन्यवाद.

    1.    हेक्सबॉर्ग म्हणाले

      टिप्पणी दिल्याबद्दल धन्यवाद. माझा लेख बाहेर आला आहे यावर माझा अजूनही विश्वास नाही. Some ते काही चुकून बाहेर आले आहे, परंतु मला आशा आहे की ते उपयुक्त आहे. 🙂

  2.   स्कालिबर म्हणाले

    धन्यवाद youssssssss! ..

    मला नियमित अभिव्यक्तींविषयी थोडासा अभ्यास करावा लागला बराच काळ झाला आहे .. .. मी शिकवल्याबद्दल धन्यवाद .. आणि त्या प्रत्येकास शिकण्यासाठी चरण-दर-चरण मार्गदर्शक ..

    खूप छान! .. .. मी ते अ‍ॅस्पिरिन घेणार आहे .. ई

    1.    हेक्सबॉर्ग म्हणाले

      आपले स्वागत आहे. धैर्य आणि नियमित अभिव्यक्ती आपल्याबरोबर नसू शकतात. 🙂

  3.   टॅनॅरॅक्स म्हणाले

    विलक्षण पोस्ट! चांगले काम. मी आश्चर्य करतो की हे आपल्याला किती तास लागले 😀

    1.    हेक्सबॉर्ग म्हणाले

      मोठ्याने हसणे!! प्रश्न असा आहे: मी जे काही बोलण्याचे ठरवले आहे ते सांगितले असते तर मला किती तास लागले असते? अनंत !! 🙂

  4.   तम्मूझ म्हणाले

    एक गोष्ट मला माहित नाही, चांगला लेख!

    1.    हेक्सबॉर्ग म्हणाले

      धन्यवाद. आपल्याबरोबर सामायिक केल्याने आनंद होतो.

  5.   helena_ryuu म्हणाले

    उत्तम स्पष्टीकरण. अभिनंदन! खरोखर उपयुक्त!

    1.    हेक्सबॉर्ग म्हणाले

      तुम्हाला ते उपयुक्त वाटले याचा मला आनंद आहे. म्हणून लिहायला आनंद होतो.

  6.   विरोधी म्हणाले

    हे कुठेतरी विशेष जावे. वैशिष्ट्यीकृत पण एक अतिशय विशिष्ट उपयुक्तता आहे. अगदी उपयुक्त, जरी मला हे Vim वर लागू झाले आहे हे मला आवडेल.

    1.    हेक्सबॉर्ग म्हणाले

      हा स्वतःला विचारण्याचा प्रश्न आहे. माझ्या मनात नियमित अभिव्यक्तीवर आणखी काही लेख आहेत. आणि मी त्यांच्यात विमबद्दल बोलू शकेन. या लेखात मी जे स्पष्ट केले त्यापासून यात काही फरक आहेत. त्यातून पुढे जाण्याची बाब आहे. 🙂

  7.   फर्नांडो म्हणाले

    चांगले!

    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!

    जर ते काही सांत्वन देत असेल तर माझे बरेच पसे 😀 आहेत

    निश्चितपणे रीजेक्स ही सर्वात उपयुक्त गोष्टी आहेत, मी सामान्यत: कमांडचे आऊटपुट ट्रिम करण्यासाठी आणि मला रुचत असलेला भाग ठेवण्यासाठी वापरतो आणि उदाहरणार्थ बॅश स्क्रिप्टमध्ये त्याशी संवाद साधतो. मी त्यांचा विद्यापीठातही बराच वापर केला आहे आणि ते कंपाइलर्सच्या बांधणीत (लेक्सोग्राफिक आणि पार्सर्सच्या परिभाषेत) महत्त्वपूर्ण महत्त्व आहे. थोडक्यात, संपूर्ण जग.

    शुभेच्छा आणि खूप चांगले काम.

    1.    हेक्सबॉर्ग म्हणाले

      खूप खूप धन्यवाद.

      मलाही तुमचा लेख आवडला. ते माझ्यापेक्षा अधिक संक्षिप्त आहे. हे द्रुत संदर्भ म्हणून काम करू शकते. हा योगायोग आहे की आम्ही त्यांना त्याच वेळी लिहिले आहे. या विषयावर लोकांना रस असल्याचे आपण पाहू शकता. 🙂

  8.   Leryलरी म्हणाले

    डमी =) साठी नियमित अभिव्यक्ती, आता हे माझ्यासाठी स्पष्ट आहे, ग्रीपसाठी रंगासह आउटपुट करण्याचा एक मार्ग म्हणजे .bashrc उर्फ ​​ग्रेप = 'ग्रेप olcolor = सदैव' मध्ये एक उपनाव तयार करणे, जर एखाद्याने कार्य केले तर .

    कोट सह उत्तर द्या

    1.    हेक्सबॉर्ग म्हणाले

      खरे. ते करण्याचा दुसरा मार्ग आहे. इनपुट दिल्याबद्दल धन्यवाद. 🙂

  9.   केझेडकेजी ^ गारा म्हणाले

    ओ_ओ… योगदानाचा भाग !!! ओ_ओ ...
    या पोस्टबद्दल तुमचे आभारी आहे, मी काही काळ अशीच प्रतीक्षा करीत होतो LOL, मी लक्षपूर्वक ऐकण्यासाठी शून्य त्रासात घरी शांतपणे वाचण्यासाठी ते सोडले.

    लेखाबद्दल धन्यवाद, मी खरोखर करतो 😀

    1.    हेक्सबॉर्ग म्हणाले

      मला माहित आहे की आपल्याला हे आवडेल. मोठ्याने हसणे!! सत्य हे आहे की बर्‍याच गोष्टी गहाळ आहेत, परंतु माझ्या मनात आधीपासूनच दुसरा भाग आहे. 🙂

  10.   एलिसर टाॅटस म्हणाले

    छान लेख, जर मी कालच वाचला असता तर आज मी दिलेला वर्ग माझ्या विद्यार्थ्यांसाठी आणखी सोपा झाला असता!

    1.    हेक्सबॉर्ग म्हणाले

      मोठ्याने हसणे!! खूप वाईट मी उशीर झाले, पण आनंद आहे की उपयुक्त आहे. 🙂

  11.   लिओटोरो म्हणाले

    शेवटी !!!, पोस्ट खूप चांगले आहे… शेवटी मला असे काहीतरी सापडले जे नियमित अभिव्यक्ती स्पष्टपणे स्पष्ट करते… ..

    1.    हेक्सबॉर्ग म्हणाले

      तेथे बर्‍याच माहिती आहे, परंतु जे समजणे सोपे आहे ते शोधणे अधिक अवघड आहे. मला आनंद आहे की मी ते अंतर पूर्ण केले. 🙂

      ग्रीटिंग्ज

  12.   शेक्सपियर रोड्स म्हणाले

    अहो मला मदतीची आवश्यकता आहे, मला या स्वरूपात / var / लॉग मध्ये शोध घ्यावा लागेल: yymmdd आणि नोंदी या सारख्या आहेत १130901० 130901 ०१.लॉग -१1० 11 ०१.लॉग, मला XNUMX सप्टेंबर ते XNUMX ऑक्टोबर दरम्यानचे सर्व शोध घ्यावे लागतील. मी फक्त एक गोष्ट व्यवस्थापित केली ती म्हणजे सप्टेंबरचा संपूर्ण भाग काढून टाकणे परंतु मला संपूर्ण शृंखला कशी करावी हे माहित नाही:

    उदा: १1309० [[०--0] 3 ते 1 सप्टेंबर दरम्यान लॉग परत करते, परंतु 30 ते 1 ऑक्टोबर दरम्यान त्याच साखळीत ते कसे मिळवावेत हे मला माहित नाही.

    1.    हेक्सबॉर्ग म्हणाले

      नियमित अभिव्यक्ती वापरुन हे करणे थोडे अवघड आहे. मला असे दिसते की कदाचित असे काहीतरी कार्य करेल:

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

      ही विस्तारित नियमित अभिव्यक्ती आहे. आपण कोणते साधन वापरत आहात हे आपण म्हणू नका, म्हणून मी आपल्याला अधिक तपशील देऊ शकत नाही.

      असं असलं तरी मला असे वाटते की नियमित अभिव्यक्ती वापरण्याऐवजी ते शोधणे चांगले. आपण असे काहीतरी वापरून पहा:

      शोधणे. -नवर्मेट '01 सेप '-ए! -newermt '11 ऑक्ट '-प्रिंट

      भाग्य आशा आहे की हे आपल्याला मदत करेल.

  13.   चिपो म्हणाले

    नमस्कार! सर्वप्रथम, मला तुमच्या कामाबद्दल धन्यवाद द्यायचे होते कारण हे पृष्ठ माझ्या सर्वोत्कृष्ट लिनक्स साइटच्या माझ्या "टॉप 3" मध्ये आहे.
    मी सराव करीत होतो आणि मला माहित नव्हते की फोन नंबरवरील रेगएक्सप माझ्यासाठी का कार्य करत नाही आणि ते मला "-E" गहाळ करीत आहे (ज्यामुळे मला या पोस्टबद्दल धन्यवाद कळले).
    मला तुम्हाला हे विचारायचे होते की रेजएक्सपीएक्सवर व्यायाम आहेत अशा चांगल्या पीडीएफ किंवा साइटबद्दल आपल्याला माहिती नसेल तर, जरासे कल्पनाशक्ती घेऊन आपण ते स्वतः शोधण्याचा सराव करू शकता.

    ग्रीटिंग्ज, पाब्लो.

  14.   कॅली म्हणाले

    खूप चांगले, मी हे सर्व वाचले आहे, आणि हो आता मला एस्पिरिनची आवश्यकता आहे 🙂

  15.   ऑस्कर म्हणाले

    मी नियमित अभिव्यक्त्यांचे सर्वोत्तम स्पष्टीकरण पाहिले आहे. हे काम सामायिक केल्याबद्दल लेखकाचे माझे आभार.

    ग्रीटिंग्ज

  16.   अलेक्झॅडर म्हणाले

    मला खरोखर एक चांगले स्पष्टीकरण आवडले