હું હંમેશાં લિનક્સ ટર્મિનલ વિશે ગમ્યું તે વસ્તુઓ છે જે તમે નિયમિત અભિવ્યક્તિઓનો ઉપયોગ કરીને પ્રાપ્ત કરી શકો છો. આપણને જટિલ લખાણ શોધવાની જરૂર છે કે પછી તેને કંઈક બીજું બદલવાની જરૂર છે, નિયમિત અભિવ્યક્તિઓનો ઉપયોગ કરવાથી કાર્ય સરળ થઈ શકે છે. શરૂઆતથી પ્રારંભ કરીએ:
નિયમિત અભિવ્યક્તિ શું છે?
નિયમિત અભિવ્યક્તિ એ વિશેષ પાત્રોની શ્રેણી છે જે અમને તે પાઠનું વર્ણન કરવાની મંજૂરી આપે છે જે આપણે શોધવા માંગીએ છીએ. ઉદાહરણ તરીકે, જો આપણે શબ્દ "લિનોક્સ" શોધવા માંગતા હો, તો તે શબ્દ આપણે જે પ્રોગ્રામનો ઉપયોગ કરી રહ્યા છીએ તેમાં મૂકવા માટે તે પર્યાપ્ત છે. શબ્દ પોતે નિયમિત અભિવ્યક્તિ છે. અત્યાર સુધી તે ખૂબ જ સરળ લાગે છે, પરંતુ જો આપણે ચોક્કસ ફાઇલમાં બધા નંબરો શોધવા માંગીએ તો? અથવા બધી લીટીઓ કે જે મૂડી પત્રથી શરૂ થાય છે? તે સંજોગોમાં તમે હવે એક સરળ શબ્દ મૂકી શકતા નથી. સોલ્યુશન એ નિયમિત અભિવ્યક્તિનો ઉપયોગ કરવો છે.
નિયમિત અભિવ્યક્તિઓ વિ ફાઇલ દાખલાઓ.
હું નિયમિત અભિવ્યક્તિમાં આવું તે પહેલાં, હું નિયમિત અભિવ્યક્તિઓ વિશેની સામાન્ય ગેરસમજને દૂર કરવા માંગું છું. નિયમિત અભિવ્યક્તિ તે નથી જે આપણે હાર્ડ ડિસ્ક પર વિવિધ ફાઇલોનો સંદર્ભ લેવા માટે આરએમ, સીપી, વગેરે જેવા આદેશોમાં પરિમાણ તરીકે મૂકીએ છીએ. તે ફાઇલ પેટર્ન હશે. નિયમિત અભિવ્યક્તિઓ, તેમ છતાં તે કેટલાક સામાન્ય પાત્રોનો ઉપયોગ કરે છે તે સમાન હોવા છતાં, ભિન્ન છે. હાર્ડ ડિસ્ક પરની ફાઇલો સામે ફાઇલ પેટર્ન ચલાવવામાં આવે છે અને તે પેટર્ન સાથે સંપૂર્ણ રીતે મેળ ખાય છે તે પાછું આપે છે, જ્યારે નિયમિત અભિવ્યક્તિ કોઈ ટેક્સ્ટની વિરુદ્ધ ચલાવવામાં આવે છે અને શોધાયેલ લખાણને સમાવે છે તે લીટીઓ પરત આપે છે. ઉદાહરણ તરીકે, પેટર્નને અનુરૂપ નિયમિત અભિવ્યક્તિ *.*
તે કંઈક એવું હશે ^.*\..*$
નિયમિત અભિવ્યક્તિના પ્રકાર.
બધા પ્રોગ્રામ સમાન નિયમિત અભિવ્યક્તિઓનો ઉપયોગ કરતા નથી. બહુ ઓછું નહીં. નિયમિત અભિવ્યક્તિઓનાં ઘણાં અથવા ઓછા પ્રમાણભૂત પ્રકારો છે, પરંતુ એવા પ્રોગ્રામ્સ છે જે વાક્યરચનાને થોડું બદલી નાખે છે, તેમના પોતાના એક્સ્ટેંશનને શામેલ કરે છે, અથવા તો સંપૂર્ણપણે જુદા જુદા પાત્રોનો ઉપયોગ કરે છે. તેથી, જ્યારે તમે કોઈ પ્રોગ્રામ સાથે નિયમિત અભિવ્યક્તિઓનો ઉપયોગ કરવા માંગતા હો જે તમે સારી રીતે જાણતા નથી, તો તમારે પ્રથમ નિયમિત અભિવ્યક્તિઓ કેવી છે તે જોવા માટે પ્રોગ્રામના મેન્યુઅલ અથવા દસ્તાવેજને જોવું જોઈએ.
સૌ પ્રથમ, ત્યાં બે મુખ્ય પ્રકારનાં નિયમિત અભિવ્યક્તિઓ હોય છે, જે POSIX ધોરણ દ્વારા આવરી લેવામાં આવે છે, જે લિનક્સ ટૂલ્સનો ઉપયોગ કરે છે. તે મૂળભૂત અને વિસ્તૃત નિયમિત અભિવ્યક્તિઓ છે. ગ્રીપ અથવા સેડ જેવા નિયમિત અભિવ્યક્તિઓ સાથે કામ કરતી ઘણી આદેશો તમને આ બે પ્રકારોનો ઉપયોગ કરવાની મંજૂરી આપે છે. હું નીચે તેમના વિશે વાત કરીશ. ત્યાં PERL- શૈલીના નિયમિત અભિવ્યક્તિઓ પણ છે, અને તે પછી વિમ અથવા ઇમેક્સ જેવા પ્રોગ્રામ્સ છે જે આના પ્રકારોનો ઉપયોગ કરે છે. આપણે શું કરવા ઇચ્છીએ છીએ તેના આધારે, તે એક અથવા બીજાનો ઉપયોગ કરવો વધુ યોગ્ય રહેશે.
નિયમિત અભિવ્યક્તિઓનું પરીક્ષણ કરવું.
નિયમિત અભિવ્યક્તિઓનો વાક્યરચના એ તુચ્છ કંઈ નથી. જ્યારે આપણે કોઈ જટિલ નિયમિત અભિવ્યક્તિ લખવી હોય ત્યારે આપણે પ્રથમ નજરમાં સમજવા માટે વિશેષ અક્ષરોની શબ્દમાળાની સામે હોઈશું, તેથી તેનો ઉપયોગ કેવી રીતે કરવો તે શીખવા માટે, આપણે ઇચ્છતા તમામ પરીક્ષણો કરવાની રીત હોવી જરૂરી છે અને પરિણામો સરળતાથી જોઈએ છે. તેથી જ હવે હું ઘણાં આદેશો મૂકવા જઈશ જેની સાથે આપણે પરીક્ષણો કરી શકીએ છીએ અને આપણે જે નિયમિત અભિવ્યક્તિઓનું વર્ચસ્વ ન હોય ત્યાં સુધી આપણે જરૂરી બધું પ્રયોગ કરી શકીએ છીએ.
પ્રથમ એક ગ્રેપ આદેશ છે. આ આદેશ છે કે આપણે શોધ કરવા માટે મોટાભાગે ઉપયોગ કરીશું. વાક્યરચના નીચે મુજબ છે:
grep [-E] 'REGEX' FICHERO
COMANDO | grep [-E] 'REGEX'
હું હંમેશાં એક અવતરણમાં નિયમિત અભિવ્યક્તિઓ મૂકવાની ભલામણ કરું છું જેથી શેલ તેની ઉપર ન આવે. પ્રથમ રસ્તો ફાઇલમાં નિયમિત અભિવ્યક્તિ શોધવાનો છે. બીજું નિયમિત અભિવ્યક્તિ દ્વારા આદેશનું આઉટપુટ ફિલ્ટર કરવાની મંજૂરી આપે છે. ડિફ defaultલ્ટ રૂપે, ગ્રેપ મૂળભૂત નિયમિત અભિવ્યક્તિઓનો ઉપયોગ કરે છે. -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
હવે ડિસ્ટ્રો નામોની પાછળ ":" પ્રકાશિત કરવામાં આવે છે, પરંતુ યુઆરએલનાં નામ નથી કારણ કે યુઆરએલ્સ પછી "/" હોય છે.
- કૌંસની શરૂઆતમાં "^" પાત્ર મૂકવું તે કૌંસના અન્ય પાત્રો સિવાયના કોઈપણ પાત્ર સાથે મેળ ખાય છે.
બીજી વસ્તુ જે આપણે કરી શકીએ છીએ તે છે પાત્રોની શ્રેણીનો ઉલ્લેખ કરવો. ઉદાહરણ તરીકે, "-" દ્વારા અનુસરવામાં આવેલી કોઈપણ સંખ્યાની શોધ કરવા માટે તે આના જેવું દેખાશે:
grep '[0-9]-' regex
આ સાથે આપણે 0 અને 9 અને પછી બાદબાકી ચિહ્ન વચ્ચેનું પાત્ર સ્પષ્ટ કરીશું. ચાલો પરિણામ જોઈએ:
આર્ક લિનક્સ: 11-03-2002 સેન્ટો: 14-05-2004 03: 32: 38
એક જ અક્ષરો સાથે રેન્જ્સને મિક્સ કરવા માટે કૌંસની અંદર બહુવિધ રેન્જનો ઉલ્લેખ કરી શકાય છે.
- કૌંસની અંદર બે અક્ષરો "-" થી અલગ રાખવી તે શ્રેણીના કોઈપણ પાત્ર સાથે મેળ ખાય છે.
ચાલો હવે જોઈએ કે શું આપણે URL નો પ્રથમ ભાગ પસંદ કરી શકીએ. એક જે "http" અથવા "https" કહે છે. તેઓ ફક્ત અંતિમ "s" માં અલગ છે, તેથી ચાલો નીચે મુજબ કરીએ:
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
Barભી પટ્ટી સાથે આપણે બે અથવા વધુ અલગ નિયમિત અભિવ્યક્તિઓ અલગ કરી શકીએ છીએ અને તેમાંથી કોઈની સાથે મેળ ખાતી રેખાઓ શોધી શકીએ છીએ:
ડેબિયન: https://wiki.debian.org/ ઉબુન્ટુ: https://wiki.ubuntu.com/ ડેબિયન: 16 / 08 / 1993 ઉબુન્ટુ: 20 / 10 / 2004
- પાત્ર «|» તેમાંથી કોઈપણ સાથે કેટલાક નિયમિત અભિવ્યક્તિઓ અને મેચોને જુદા પાડવાની સેવા આપે છે. તે વિસ્તૃત નિયમિત અભિવ્યક્તિઓ માટે પણ વિશિષ્ટ છે.
ચાલો ચાલુ રાખીએ. હવે આપણે શબ્દ "લિનક્સ" શોધીશું, પરંતુ તે જ જ્યાં તે ડાબી બાજુના બીજા શબ્દ સાથે અટક્યો નથી. આપણે આ આ રીતે કરી શકીએ:
grep '\
અહીં અગત્યનું પાત્ર "<" છે, પરંતુ તેની આગળ "\" મૂકીને તેને છટકી જવાની જરૂર છે જેથી ગ્રીપ તેને વિશિષ્ટ પાત્ર તરીકે અર્થઘટન કરે. પરિણામ નીચે મુજબ છે:
આર્ક Linux: 11-03-2002 થી Linux રુલેઝ.
તમે શબ્દો શોધવા માટે "right>" નો ઉપયોગ પણ કરી શકો છો જે એકબીજાની બાજુમાં યોગ્ય નથી. ચાલો એક ઉદાહરણ સાથે ચાલો. ચાલો આ આદેશનો પ્રયાસ કરીએ:
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
- તેમની વચ્ચેની સંખ્યા સાથે "{" અને "between" અક્ષરો અગાઉના અક્ષર સાથે મેળ ખાતી સંખ્યાની ઉલ્લેખિત સંખ્યાને પુનરાવર્તિત કરે છે.
કૌંસ સાથેનું હવે બીજું ઉદાહરણ. ધારો કે આપણે એવા શબ્દો શોધવા માંગીએ છીએ કે જેમાં and થી lower નીચલા અક્ષરો હોય. અમે નીચેના કરી શકીએ:
grep '[a-z]\{3,6\}' regex
અને પરિણામ આ હશે:
- એલIsta de પૃષ્ઠs વિકી: પ્રતિઆરએચLઇનક્સ: https: //વિકી.આર્કેલિનક્સ.સંસ્થા/ જીપ્રેરવું: https: //વિકી.હળવા.સંસ્થા/વિકી/Mઆઈ_Pઉંમર CEntઓએસ: http: //વિકી.સેંકડો.સંસ્થા/ ડીઇબિયન: https: //વિકી.ડેબિયન.સંસ્થા/ ઓઆરબન્ટુ: https: //વિકી.ઉબુન્ટુ.કોમ/ - એફતમે ચૂકી de લોંચ કરો: પ્રતિઆરએચ Lઇનક્સ: 11-03-2002 જીપ્રેરવું: 31/03/2002 સીEntOs: 14-05-2004 03:32:38 Dઇબિયન: 16/08/1993 યુબન્ટુ: 20/10/2004 ડીતે છે Lઇનક્સ Rયુલેઝ.
જે, તમે જોઈ શકો છો, જે જોઈએ તેવું લાગતું નથી. આ કારણ છે કે નિયમિત અભિવ્યક્તિને અન્ય શબ્દોની અંદરના અક્ષરો મળે છે જે લાંબા હોય છે. ચાલો આ અન્ય સંસ્કરણનો પ્રયાસ કરીએ:
grep '\<[a-z]\{3,6\}\>' regex
પરિણામ:
- પૃષ્ઠોની સૂચિ વિકી: આર્કલિંક્સ: https: //વિકી.archlinux.સંસ્થા/ જેન્ટુ: https: //વિકી.હળવા.સંસ્થા/વિકી/ મેઇન_પેજ સેન્ટોસ: http: //વિકી.સેંકડો.સંસ્થા/ ડેબિયન: https: //વિકી.ડેબિયન.સંસ્થા/ ઉબુન્ટુ: https: //વિકી.ઉબુન્ટુ.કોમ/
આ પહેલાથી જ જે જોઈએ છે તેવું લાગે છે. આપણે જે કર્યું છે તે જરૂરી છે કે શબ્દ પહેલા અક્ષરની શરૂઆતમાં જ શરૂ થાય અને છેલ્લા પછી જ સમાપ્ત થાય.
- અક્ષરો "{" અને "}" તેમની વચ્ચે બે નંબરો સાથે અલ્પવિરામથી અલગ પડેલા પાછલા પાત્રએ બે નંબરો દ્વારા દર્શાવવામાં આવેલા સમયની સંખ્યાને પુનરાવર્તિત કરી.
ચાલો હવે એક પાત્ર જોઈએ જે "+" નો મુખ્ય છે. તે "*" છે અને તેનું veryપરેશન ખૂબ સમાન છે, ફક્ત તે શૂન્ય સહિતના કોઈપણ અક્ષરો સાથે મેળ ખાય છે. તે છે, તે "+" જેવું જ કરે છે પરંતુ પાત્રની તેની ડાબી બાજુએ લખાણમાં દેખાવાની જરૂર નથી. ઉદાહરણ તરીકે, ચાલો તે સરનામાંઓ શોધવાનો પ્રયત્ન કરીએ કે જે વિકિથી શરૂ થાય છે અને org પર સમાપ્ત થાય છે:
grep 'wiki.*org' regex
ચાલો પરિણામ જોઈએ:
આર્કલિંક્સ: https: //wiki.archlinux.org/ જેન્ટુ: https: //wiki.gentoo.org/ વિકી / મેઈનપેજ સેન્ટોસ: http: //wiki.centos.org/ ડેબિયન: https: //wiki.debian.org/
સંપૂર્ણ
હવે છેલ્લું પાત્ર જે આપણે જોવા જઈશું. "Its" પાત્રનો ઉપયોગ પાત્રને તેની જમણી બાજુએથી બચવા માટે કરવામાં આવે છે જેથી તે તેના વિશેષ અર્થ ગુમાવે. ઉદાહરણ તરીકે: ધારો કે આપણે લીટીઓ શોધી કા wantવી છે કે જે એક બિંદુ સાથે સમાપ્ત થાય છે. આપણામાં આવી શકે તેવું પ્રથમ વસ્તુ આ હોઈ શકે છે:
grep '.$' regex
પરિણામ તે નથી જેની આપણે શોધ કરી રહ્યા છીએ:
- વિકી પાનાઓની સૂચિ: આર્કલિંક્સ: https://wiki.archlinux.org/ જેન્ટૂ: https://wiki.gentoo.org/wiki/Main_Page સેન્ટોસ: 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 નું વિશ્લેષણ કરી શકે છે.
રેજેક્સ વિના આપણું જીવન શું હશે?
લેખ ખૂબ ઉપયોગી છે, પરંતુ હું તેને થોડું થોડું વાંચીશ. તમારો ખુબ ખુબ આભાર.
ટિપ્પણી કરવા બદલ આભાર. હું હજી પણ માનતો નથી કે મારો લેખ બહાર આવ્યો છે. Some તે કેટલીક ભૂલ સાથે બહાર આવી છે, પરંતુ મને આશા છે કે તે ઉપયોગી છે. 🙂
આભાર youssssssss! ..
મારે નિયમિત અભિવ્યક્તિઓ વિશે થોડો અભ્યાસ કરવો પડ્યો તે ઘણો સમય થયો છે .. .. હું શિક્ષણ આપવા બદલ આભાર .. અને તેમાંથી દરેક શીખવા માટે એક-એક-પગલું માર્ગદર્શિકા ..
ખૂબ સરસ! .. .. હું તે એસ્પિરિન લઈ જાઉં છું .. પણ
ભલે પધાર્યા. હિંમત અને તે નિયમિત અભિવ્યક્તિઓ તમારી સાથે ન થઈ શકે. 🙂
વિચિત્ર પોસ્ટ! મહાન કામ. મને આશ્ચર્ય છે કે તે તમને કેટલા કલાક લે છે 😀
હા હા હા!! સવાલ એ છે: જો મારે કહેવાની ઇચ્છા પ્રમાણે બધું કહ્યું હોત તો તે કેટલા કલાકો લેત? અનંત !! 🙂
એક વસ્તુ મને ખબર ન હતી, સારા લેખ!
આભાર. તે તમારી સાથે શેર કરવામાં આનંદ છે.
મહાન સમજૂતી. અભિનંદન! ખરેખર ઉપયોગી!
મને આનંદ છે કે તમને તે ઉપયોગી લાગ્યું. તેથી તે લખવાનો આનંદ છે.
આ ક્યાંક ખાસ જવા જોઈએ. ફીચર્ડની જેમ પરંતુ તેમાં ખૂબ જ વિશિષ્ટ ઉપયોગિતા છે. તદ્દન ઉપયોગી છે, તેમ છતાં હું તેને વિમ પર લાગુ થવું જોઈતો હોઉં છું.
તે મારી જાતને પૂછવાનો એક પ્રશ્ન છે. મારા ધ્યાનમાં નિયમિત અભિવ્યક્તિઓ પર થોડા વધુ લેખો છે. અને હું તેમનામાં વિમ વિશે વાત કરી શકું. આ લેખમાં મેં જે સમજાવ્યું છે તેનાથી તેના કેટલાક તફાવત છે. તેની સાથે આગળ વધવાની વાત છે. 🙂
સારું!
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!
જો તે કોઈ આશ્વાસન છે, તો મારું વધુ પડતું કરવું છે 😀
નિશ્ચિતરૂપે રેજેક્સ એ સૌથી ઉપયોગી વસ્તુઓ છે, હું સામાન્ય રીતે તેનો ઉપયોગ આદેશોના આઉટપુટને ટ્રિમ કરવા માટે અને જે ભાગ મને રુચિ છે તે રાખવા માટે કરે છે, અને પછી બેશ સ્ક્રિપ્ટમાં તેની સાથે ક્રિયાપ્રતિક્રિયા કરું છું, ઉદાહરણ તરીકે. મેં યુનિવર્સિટીમાં પણ તેનો ઘણો ઉપયોગ કર્યો છે, અને કમ્પાઇલર્સના નિર્માણમાં તેઓ ખૂબ મહત્વ ધરાવે છે (શબ્દશાસ્ત્ર અને પાર્સરની વ્યાખ્યામાં). ટૂંકમાં, આખી દુનિયા.
શુભેચ્છાઓ અને ખૂબ જ સારા કાર્ય.
કેમ ગ્રાસિઅસ.
મને પણ તમારો લેખ ગમ્યો. તે ખાણ કરતાં વધુ સંક્ષિપ્ત છે. તે ઝડપી સંદર્ભ તરીકે સેવા આપી શકે છે. તે એક યોગાનુયોગ છે કે અમે તેમને તે જ સમયે લખ્યું છે. તમે જોઈ શકો છો કે લોકો આ વિષયમાં રુચિ ધરાવે છે. 🙂
ડમીઝ માટે નિયમિત અભિવ્યક્તિઓ =), હવે તે મારા માટે સ્પષ્ટ છે, ગ્રીપ માટે રંગ સાથે આઉટપુટ મેળવવાનો એક રસ્તો .bashrc ઉર્ફ ગ્રેપ = 'ગ્રીપ ol કલરર = હંમેશા' માં ઉપનામ બનાવવાનો છે, જો તે કોઈના માટે કાર્ય કરે તો .
સાદર
સાચું. તે કરવાની આ બીજી રીત છે. ઇનપુટ માટે આભાર. 🙂
O_O… યોગદાન ભાગ !!! O_O ...
આ પોસ્ટ માટે ખૂબ ખૂબ આભાર, હું થોડા સમય માટે આની જેમ રાહ જોતો હતો, લોલને ધ્યાન કેન્દ્રિત કરવા માટે, હું તેને શૂન્ય મુશ્કેલીથી ઘરે શાંતિથી વાંચવા માટે ખુલ્લું છોડું છું.
લેખ માટે આભાર, હું ખરેખર 😀
હું જાણું છું કે તમને તે ગમશે. હા હા હા!! સત્ય એ છે કે ઘણી વસ્તુઓ ખૂટે છે, પરંતુ મારે પહેલાથી જ ધ્યાનમાંનો બીજો ભાગ છે. 🙂
સરસ લેખ, જો મેં ગઈકાલે તે વાંચ્યું હોત, તો આજે મેં આપ્યો તે વર્ગ મારા વિદ્યાર્થીઓ માટે વધુ સરળ હોત!
હા હા હા!! ખૂબ જ ખરાબ હું મોડું કર્યું, પરંતુ આનંદકારક છે કે તે મદદરૂપ છે. 🙂
છેવટે !!!, સુપર સારી પોસ્ટ…. છેવટે મને કંઈક એવું મળ્યું જે નિયમિત અભિવ્યક્તિઓને સ્પષ્ટપણે સમજાવે છે… ..
ત્યાં ઘણી બધી માહિતી છે, પરંતુ તે સમજવાનું વધુ મુશ્કેલ છે તેવું કંઈક મુશ્કેલ છે. મને આનંદ છે કે મેં તે અંતર ભરી દીધું. 🙂
શુભેચ્છાઓ.
અરે મને સહાયની જરૂર છે, મારે / var / લ logગ્સમાં ફોર્મેટ સાથે શોધ કરવી પડશે: yymmdd, અને લsગ્સ 130901.log -130901.log જેવા આવે છે, મારે તે બધાની શોધ કરવી પડશે જે 1 સપ્ટેમ્બરથી 11 ઓક્ટોબરની વચ્ચે છે. , એકમાત્ર વસ્તુ જે મેં સંચાલિત કરી તે છે તે તમામ સપ્ટેમ્બરને દૂર કરવું હતું પરંતુ મને સંપૂર્ણ સાંકળ કેવી રીતે કરવું તે ખબર નથી:
દા.ત.: ૧1309 [[०--0] મને સપ્ટેમ્બર 3 થી 1 સપ્ટેમ્બરની વચ્ચે લોગ પરત કરે છે, પરંતુ 30 ઓક્ટોબરથી 1 દરમિયાન મને તે જ સાંકળમાં કેવી રીતે પ્રવેશ કરવો તે ખબર નથી.
નિયમિત અભિવ્યક્તિઓનો ઉપયોગ કરીને તે કરવું થોડું મુશ્કેલ છે. મને એવું થાય છે કે આવું કંઈક કામ કરે છે:
13(09[0-3]|10(0|1[01]))
તે વિસ્તૃત નિયમિત અભિવ્યક્તિ છે. તમે કયું સાધન વાપરી રહ્યા છો તે તમે કહો નહીં, તેથી હું તમને વધુ વિગતો આપી શકતો નથી.
કોઈપણ રીતે, મને લાગે છે કે આ નિયમિત અભિવ્યક્તિઓનો ઉપયોગ કરવાને બદલે શોધ સાથે કરવાનું વધુ સારું છે. તમે આના જેવા કંઈક અજમાવી શકો છો:
શોધો. -નવરમટ '01 સેપ '-એ! -નવરમટ '11 oct '-પ્રિન્ટ
નસીબ. આશા છે કે આ તમને મદદ કરશે.
નમસ્તે! સૌ પ્રથમ, હું તમારા કાર્ય માટે આભાર માગતો હતો કારણ કે આ પૃષ્ઠ શ્રેષ્ઠ લિનક્સ સાઇટ્સની મારી "ટોચના 3" માંથી છે.
હું પ્રેક્ટિસ કરતો હતો અને મને ખબર ન હતી કે ફોન નંબર પરના રેગએક્સપેક્સ મારા માટે કેમ કામ કરતા નથી અને તે હતું કે હું "-E" (જે મને આ પોસ્ટનો આભાર સમજાયું) ખૂટે છે.
હું તમને પૂછવા માંગતો હતો કે શું તમે કોઈ સારી પીડીએફ અથવા સાઇટને જાણતા નથી જ્યાં રેગેએક્સપ પર કસરત છે, જો કે થોડી કલ્પનાથી તમે તે જાતે શોધવાની પ્રેક્ટિસ કરી શકો છો.
શુભેચ્છાઓ, પાબ્લો.
ખૂબ સારું, મેં હમણાં જ તે બધું વાંચ્યું છે, અને હા હવે મને એસ્પિરિનની જરૂર છે 🙂
મેં નિયમિત અભિવ્યક્તિઓ જોઈ છે તે શ્રેષ્ઠ સ્પષ્ટીકરણ. આ કાર્ય શેર કરવા બદલ લેખકનો મારો આભાર.
આભાર.
મને ખરેખર ખૂબ સરસ સમજૂતી ગમ્યું