रेगेक्स का पूर्ण रूप रेगुलर एक्सप्रेशन है। यह किसी भी प्रोग्रामिंग भाषा की एक महत्वपूर्ण विशेषता है। यह एक स्ट्रिंग पैटर्न है जिसका उपयोग स्ट्रिंग मान में स्ट्रिंग से मिलान करने, खोजने या बदलने के लिए किया जाता है। रेगेक्स पैटर्न का उपयोग पायथन स्क्रिप्ट में पायथन के 'री' मॉड्यूल का उपयोग करके किया जा सकता है। इस मॉड्यूल में विभिन्न स्ट्रिंग ऑपरेशन करने के लिए कई प्रकार के फ़ंक्शन हैं। कार्यों को खोजने या बदलने के लिए रेगेक्स पैटर्न को परिभाषित करने के लिए विभिन्न मेटाकैरेक्टर और विशेष अनुक्रमों का उपयोग किया जाता है। पायथन लिपि में आमतौर पर उपयोग किए जाने वाले कुछ मेटाकैरेक्टर, विशेष अनुक्रम और रेगेक्स विधियों का उपयोग करने के उद्देश्य इस ट्यूटोरियल में दिखाए गए हैं।
रेगेक्स में आमतौर पर उपयोग किए जाने वाले कुछ मेटाकैरेक्टर:
पात्र | उद्देश्य |
'+' | इसका उपयोग किसी स्ट्रिंग में किसी विशेष वर्ण की एक या अधिक घटनाओं से मिलान करने के लिए किया जाता है। |
'*' | इसका उपयोग किसी स्ट्रिंग में किसी विशेष वर्ण की शून्य या अधिक घटनाओं से मिलान करने के लिए किया जाता है। |
'?' | इसका उपयोग किसी स्ट्रिंग में किसी विशेष वर्ण की शून्य या एक घटना से मिलान करने के लिए किया जाता है। |
'^' | इसका उपयोग स्ट्रिंग की शुरुआत में विशेष वर्ण या स्ट्रिंग से मिलान करने के लिए किया जाता है। |
'$' | इसका उपयोग स्ट्रिंग के अंत में विशेष वर्ण या स्ट्रिंग से मिलान करने के लिए किया जाता है। |
'|' | इसका उपयोग एक स्ट्रिंग में एकाधिक स्ट्रिंग्स में से किसी एक से मिलान करने के लिए किया जाता है। यह OR लॉजिक की तरह काम करता है। |
'[]' | इसका उपयोग विभिन्न वर्णों के मिलान के लिए किया जाता है। |
'{}' | इसका उपयोग विशिष्ट संख्या में वर्णों के मिलान के लिए किया जाता है। |
रेगेक्स में आमतौर पर उपयोग किए जाने वाले कुछ विशेष अनुक्रम:
दृश्यों | उद्देश्य |
'\ए' | इसका उपयोग स्ट्रिंग की शुरुआत में विशेष वर्ण से मिलान करने के लिए किया जाता है। यह '^' वर्ण की तरह काम करता है। |
'\बी', '\बी' | '\b' का उपयोग उस स्ट्रिंग से मिलान करने के लिए किया जाता है जिसमें स्ट्रिंग के आरंभ या अंत में विशेष वर्ण या शब्द होता है। '\B' '\b' के विपरीत कार्य करता है। |
'\d', '\D' | '\d' का उपयोग स्ट्रिंग में दशमलव संख्या से मिलान करने के लिए किया जाता है जो '[0-9]' के समान है। '\D' '\d' के विपरीत कार्य करता है। |
'\s', '\S' | '\s' का उपयोग स्ट्रिंग में रिक्त स्थान से मिलान करने के लिए किया जाता है जो '[\n\t\r\v]' के समान है। “\S” “\s” के विपरीत कार्य करता है। |
'\w', '\W' | स्ट्रिंग में वर्णमाला और संख्यात्मक वर्णों का मिलान करने के लिए '\w' का उपयोग किया जाता है। “\W” “\w” के विपरीत कार्य करता है। |
'\साथ' | इसका उपयोग स्ट्रिंग के अंत में विशेष वर्ण से मिलान करने के लिए किया जाता है। यह '$' अक्षर की तरह काम करता है। |
उदाहरण 1: मैच() फ़ंक्शन का उपयोग करके स्ट्रिंग का मिलान करें
मैच() फ़ंक्शन का उपयोग स्ट्रिंग की शुरुआत में रेगेक्स पैटर्न से मिलान करने के लिए किया जाता है। इस फ़ंक्शन का सिंटैक्स इस प्रकार दिया गया है:
वाक्य - विन्यास:
पुनः मिलान ( पैटर्न, स्ट्रिंग, झंडे = 0 )
यहां, रेगेक्स पैटर्न को परिभाषित करने के लिए पहले तर्क का उपयोग किया जाता है। दूसरे तर्क का उपयोग मुख्य स्ट्रिंग को परिभाषित करने के लिए किया जाता है। तीसरा तर्क वैकल्पिक है और इसका उपयोग विभिन्न प्रकार के झंडों को परिभाषित करने के लिए किया जाता है।
निम्नलिखित स्क्रिप्ट के साथ एक पायथन फ़ाइल बनाएं जो मैच() फ़ंक्शन का उपयोग करके परिभाषित स्ट्रिंग के साथ रेगेक्स पैटर्न से मेल खाती है। सबसे पहले, मिलान के लिए एक परिभाषित रेगेक्स पैटर्न का उपयोग किया जाता है। इसके बाद, उपयोगकर्ता से एक खोज शब्द लिया जाता है और स्ट्रिंग मान के साथ मिलान करने के लिए रेगेक्स पैटर्न के रूप में उपयोग किया जाता है। यदि कोई मिलान पाया जाता है, तो खोज शब्द मुद्रित किया जाता है। अन्यथा, 'कोई मिलान मूल्य नहीं मिला' स्ट्रिंग मुद्रित होती है।
#आवश्यक मॉड्यूल आयात करेंपुनः आयात करें
#मिलान परिणाम मुद्रित करने के लिए फ़ंक्शन को परिभाषित करें
डीईएफ़ मैचस्ट्रिंग ( ) :
#मैच() फ़ंक्शन का रिटर्न मान जांचें
अगर साथ में ! = कोई नहीं:
छपाई ( '''' + mat.group ( ) + '''' में पाया जाता है + स्ट्रवैल्यू + '''' )
अन्य:
छपाई ( 'कोई मेल खाता मूल्य नहीं मिला।' )
#स्ट्रिंग मान को परिभाषित करें
स्ट्रवैल्यू = 'पेहले आये पेहलॆ गये।'
#पैटर्न के आधार पर स्ट्रिंग का मिलान करें
चटाई = पुनः मिलान ( '^पहले' , स्ट्रवैल्यू )
#मैच परिणाम प्रिंट करने के लिए फ़ंक्शन को कॉल करें
माचिस की तीली ( )
#खोज स्ट्रिंग लें
इनवैल्यू = इनपुट ( 'खोज मान दर्ज करें:' )
चटाई = पुनः मिलान ( इनवैल्यू +, स्ट्रवैल्यू )
#मैच परिणाम प्रिंट करने के लिए फ़ंक्शन को कॉल करें
माचिस की तीली ( )
निम्नलिखित आउटपुट 'प्रथम' इनपुट मान के लिए प्रकट होता है:
उदाहरण 2: फ़ाइंडॉल() फ़ंक्शन का उपयोग करके स्ट्रिंग ढूंढें
फाइंडॉल () फ़ंक्शन का उपयोग उन सभी मिलान शब्दों को वापस करने के लिए किया जाता है जो मुख्य स्ट्रिंग में टुपल के रूप में पाए जाते हैं।
वाक्य - विन्यास:
पुनः खोजें ( पैटर्न, स्ट्रिंग, झंडे = 0 )
यहां, रेगेक्स पैटर्न को परिभाषित करने के लिए पहले तर्क का उपयोग किया जाता है। दूसरे तर्क का उपयोग मुख्य स्ट्रिंग को परिभाषित करने के लिए किया जाता है। तीसरा तर्क वैकल्पिक है और इसका उपयोग विभिन्न प्रकार के झंडों को परिभाषित करने के लिए किया जाता है।
निम्नलिखित स्क्रिप्ट के साथ एक पायथन फ़ाइल बनाएं जो उपयोगकर्ता से एक मुख्य स्ट्रिंग मान और एक खोज स्ट्रिंग मान लेती है। इसके बाद, मुख्य स्ट्रिंग में खोज शब्द ढूंढने के लिए रेगेक्स पैटर्न में खोज शब्द का उपयोग करें। कुल मिलानों की संख्या आउटपुट में मुद्रित होती है।
#आवश्यक मॉड्यूल आयात करेंपुनः आयात करें
# एक स्ट्रिंग मान लें
इनवैल्यू = इनपुट ( 'एक स्ट्रिंग दर्ज करें:' )
#एक खोज शब्द लें
srcValue = इनपुट ( 'एक खोज शब्द दर्ज करें:' )
#शब्द को स्ट्रिंग में खोजें
srcResult = पुनः खोजें ( srcवैल्यू + '\में*' , मूल्य में )
#खोज परिणाम प्रिंट करें
छपाई ( 'शब्द '' + स्रोत वैल्यू + ''स्ट्रिंग में पाया जाता है'
+ स्ट्र ( केवल ( srcResult ) ) + 'समय।' )
आउटपुट के अनुसार, खोज शब्द 'ईट' मुख्य स्ट्रिंग 'हम जीने के लिए खाते हैं और खाने के लिए नहीं जीते' में दो बार पाया जाता है।
उदाहरण 3: खोज() फ़ंक्शन का उपयोग करके स्ट्रिंग खोजें
स्ट्रिंग मान में किसी विशेष पैटर्न को खोजने के लिए खोज() एक अन्य फ़ंक्शन है। इसमें मैच() और फाइंडॉल() फ़ंक्शन के समान तर्क शामिल हैं। निम्नलिखित स्क्रिप्ट के साथ एक पायथन फ़ाइल बनाएं जो 'पायथन' शब्द को एक स्ट्रिंग मान में खोजती है जिसे उपयोगकर्ता से लिया जाएगा। यदि खोज शब्द इनपुट मान में मौजूद है, तो एक सफलता संदेश मुद्रित होता है। अन्यथा, एक विफलता संदेश मुद्रित होता है.
# पुनः मॉड्यूल आयात करेंपुनः आयात करें
# एक स्ट्रिंग मान लें
इनवैल्यू = इनपुट ( 'एक स्ट्रिंग दर्ज करें:' )
#स्ट्रिंग मान में विशेष शब्द खोजें
srcResult = पुनः खोजें ( आर 'पायथन\w*' , मूल्य में )
# जांचें कि खोज शब्द मिला है या नहीं
अगर srcपरिणाम:
छपाई ( '''' + srcResult.group ( ) + '''' में पाया जाता है +इनवैल्यू+ '''' )
अन्य:
छपाई ( 'खोज स्ट्रिंग नहीं मिली।' )
आउटपुट:
यदि इनपुट स्ट्रिंग 'मुझे पायथन प्रोग्रामिंग पसंद है' तो निम्न आउटपुट दिखाई देता है:
यदि इनपुट स्ट्रिंग 'मुझे PHP प्रोग्रामिंग पसंद है' तो निम्न आउटपुट दिखाई देता है:
उदाहरण 4: सब() फ़ंक्शन का उपयोग करके स्ट्रिंग को बदलें
उप() फ़ंक्शन का उपयोग पैटर्न के आधार पर किसी विशेष स्ट्रिंग को खोजने और उसे दूसरे शब्द से बदलने के लिए किया जाता है। इस फ़ंक्शन का सिंटैक्स इस प्रकार दिया गया है:
वाक्य - विन्यास:
पुनः उप ( पैटर्न, रिप्लेस_स्ट्रिंग, मेन_स्ट्रिंग )
इस फ़ंक्शन के पहले तर्क में वह पैटर्न शामिल है जिसका उपयोग मुख्य स्ट्रिंग में विशेष स्ट्रिंग को खोजने के लिए किया जाता है।
इस फ़ंक्शन के दूसरे तर्क में 'प्रतिस्थापन' स्ट्रिंग मान शामिल है।
इस फ़ंक्शन के तीसरे तर्क में मुख्य स्ट्रिंग है।
यदि पहले तर्क के आधार पर मुख्य स्ट्रिंग में कोई मेल खाने वाला शब्द मौजूद है तो यह फ़ंक्शन प्रतिस्थापित स्ट्रिंग लौटाता है।
निम्नलिखित स्क्रिप्ट के साथ एक पायथन फ़ाइल बनाएं जो स्ट्रिंग के अंत में दो अंकों की खोज करती है। यदि स्ट्रिंग के अंत में दो अंक हैं, तो अंकों को '$50' स्ट्रिंग से बदल दिया जाता है।
# पुनः मॉड्यूल आयात करेंपुनः आयात करें
#मुख्य स्ट्रिंग को परिभाषित करें
स्ट्रवैल्यू = 'किताब की कीमत 70 है'
#खोज पैटर्न को परिभाषित करें
पैटर्न = '[0-9]{2}'
#प्रतिस्थापन मान को परिभाषित करें
रिप्लेसवैल्यू = '$50'
#पैटर्न के आधार पर स्ट्रिंग खोजें और बदलें
संशोधित_strValue = पुनः.उप ( पैटर्न, रिप्लेसवैल्यू, स्ट्रवैल्यू )
#मूल और संशोधित स्ट्रिंग मान प्रिंट करें
छपाई ( 'मूल स्ट्रिंग:' + स्ट्रवैल्यू )
छपाई ( 'संशोधित स्ट्रिंग:' + संशोधित_strValue )
आउटपुट:
मुख्य तार के अंत में 70 थे। तो, प्रतिस्थापित स्ट्रिंग में 70 को $50 से बदल दिया गया है।
उदाहरण 5: Subn() फ़ंक्शन का उपयोग करके स्ट्रिंग को बदलें
सबएन() फ़ंक्शन सब() फ़ंक्शन की तरह काम करता है, सिवाय इसके कि यह आउटपुट को टपल के रूप में लौटाता है जहां पहले इंडेक्स में प्रतिस्थापित मान होता है और दूसरे इंडेक्स में मैचों की कुल संख्या होती है।
निम्नलिखित स्क्रिप्ट के साथ एक पायथन फ़ाइल बनाएं जो सबएन() फ़ंक्शन का उपयोग करके 'LinuxHint.com' स्ट्रिंग में अक्षर ए से एल तक खोजती है:
# पुनः मॉड्यूल आयात करेंपुनः आयात करें
#मुख्य स्ट्रिंग को परिभाषित करें
स्ट्रवैल्यू = 'LinuxHint.com'
#खोज पैटर्न को परिभाषित करें
पैटर्न = '[तक]'
#प्रतिस्थापन मान को परिभाषित करें
रिप्लेसवैल्यू = '*'
#पैटर्न के आधार पर स्ट्रिंग खोजें और बदलें
संशोधित_strValue = पुनः.subn ( पैटर्न, रिप्लेसवैल्यू, स्ट्रवैल्यू )
# मूल स्ट्रिंग और सबएन के आउटपुट को प्रिंट करें ()
छपाई ( 'मूल स्ट्रिंग: \एन ' + स्ट्रवैल्यू )
छपाई ( 'subn() फ़ंक्शन का आउटपुट:' )
छपाई ( संशोधित_strValue )
आउटपुट:
निम्नलिखित आउटपुट के अनुसार, 'L' और 'H' वर्णों को '*' वर्ण से बदल दिया गया है।
उदाहरण 6: स्प्लिट() फ़ंक्शन का उपयोग करके स्ट्रिंग को विभाजित करें
निम्नलिखित स्क्रिप्ट के साथ एक पायथन फ़ाइल बनाएं जिसमें रेगेक्स पैटर्न के आधार पर मुख्य स्ट्रिंग को कई भागों में विभाजित करने के लिए स्प्लिट() फ़ंक्शन का उपयोग किया गया हो:
# पुनः मॉड्यूल आयात करेंपुनः आयात करें
#स्ट्रिंग मान परिभाषित करें
strVal = 'रूपा अख्तर; नीरा चौधरी; मजहरुल इस्लाम'
#उस पैटर्न को परिभाषित करें जिसका उपयोग डेटा को विभाजित करने के लिए किया जाएगा
पैटर्न = '[^ए-ज़ा-ज़ ]'
#विभाजित मानों को एक सूची में संग्रहीत करें
स्प्लिट_परिणाम = पुनः विभाजित ( पैटर्न, strVal )
छपाई ( 'स्प्लिट() फ़ंक्शन का आउटपुट:' )
छपाई ( विभाजन_परिणाम )
आउटपुट:
आउटपुट के अनुसार, मुख्य स्ट्रिंग को स्क्रिप्ट में उपयोग किए जाने वाले '[^A-Za-z ]' पैटर्न के आधार पर तीन भागों में विभाजित किया गया है।
निष्कर्ष
स्ट्रिंग्स को खोजने, बदलने और विभाजित करने के लिए सबसे अधिक उपयोग किए जाने वाले मेटाकैरेक्टर्स, रेंज और पायथन बिल्ट-इन फ़ंक्शंस का उद्देश्य इस ट्यूटोरियल में सरल पायथन स्क्रिप्ट का उपयोग करके दिखाया गया है।