विषयसूची
कभी नहीं समझ सकते कि एक्सेल फॉर्मूले में रेगुलर एक्सप्रेशन का समर्थन क्यों नहीं किया जाता है? अब, वे हैं :) हमारे कस्टम कार्यों के साथ, आप एक विशिष्ट पैटर्न से मेल खाने वाली स्ट्रिंग्स को आसानी से ढूंढ सकते हैं, बदल सकते हैं, निकाल सकते हैं और हटा सकते हैं। जोड़ - तोड़। हम्म... रेगुलर एक्सप्रेशंस के बारे में क्या? ओह, एक्सेल में कोई बिल्ट-इन रेगेक्स फंक्शन नहीं है। लेकिन कोई यह नहीं कहता कि हम अपना खुद का नहीं बना सकते :)
रेगुलर एक्सप्रेशन क्या है?
एक रेगुलर एक्सप्रेशन (उर्फ regex या <8)>regexp ) वर्णों का एक विशेष रूप से एन्कोडेड अनुक्रम है जो एक खोज पैटर्न को परिभाषित करता है। उस पैटर्न का उपयोग करके, आप एक स्ट्रिंग में मेल खाने वाला वर्ण संयोजन पा सकते हैं या डेटा इनपुट को मान्य कर सकते हैं। यदि आप वाइल्डकार्ड संकेतन से परिचित हैं, तो आप रेगेक्स को वाइल्डकार्ड के एक उन्नत संस्करण के रूप में सोच सकते हैं।
रेगुलर एक्सप्रेशन का अपना सिंटैक्स होता है जिसमें विशेष वर्ण, ऑपरेटर और निर्माण शामिल होते हैं। उदाहरण के लिए, [0-5] 0 से 5 तक किसी एक अंक से मेल खाता है।
रेगुलर एक्सप्रेशन का उपयोग जावास्क्रिप्ट और VBA सहित कई प्रोग्रामिंग भाषाओं में किया जाता है। उत्तरार्द्ध में एक विशेष RegExp ऑब्जेक्ट है, जिसका उपयोग हम अपने कस्टम फ़ंक्शंस बनाने के लिए करेंगे।
क्या एक्सेल रेगेक्स का समर्थन करता है?
अफसोस की बात है कि एक्सेल में कोई इनबिल्ट रेगेक्स फ़ंक्शन नहीं है। अपने फ़ार्मुलों में रेगुलर एक्सप्रेशन का उपयोग करने में सक्षम होने के लिए, आपको अपना स्वयं का यूज़र-डिफ़ाइंड फ़ंक्शन (VBAतर्क:
=IF(RegExpMatch(A5, $A$2), "Yes", "No")
अधिक सूत्र उदाहरणों के लिए, कृपया देखें:
- रेगुलर एक्सप्रेशन का उपयोग करके स्ट्रिंग का मिलान कैसे करें<25
- रेगेक्स के साथ एक्सेल डेटा वैलिडेशन
एक्सेल रेगेक्स एक्सट्रेक्ट फंक्शन
RegExpExtract फंक्शन उन सबस्ट्रिंग्स को खोजता है जो एक रेगुलर एक्सप्रेशन से मेल खाते हैं और सभी मैचों को निकालते हैं या विशिष्ट मिलान।
RegExpExtract(text, pattern, [instance_num], [match_case])कहाँ:
- पाठ (आवश्यक) - खोजने के लिए पाठ स्ट्रिंग in.
- पैटर्न (आवश्यक) - मिलान करने के लिए रेगुलर एक्सप्रेशन।
- Instance_num (वैकल्पिक) - एक सीरियल नंबर जो इंगित करता है कि किस उदाहरण को निचोड़। यदि छोड़ा जाता है, तो सभी पाए गए मिलान लौटाता है (डिफ़ॉल्ट)।
- Match_case (वैकल्पिक) - परिभाषित करता है कि मिलान करना है या नहीं (TRUE या छोड़ा गया) या अनदेखा करें (FALSE) टेक्स्ट केस। <5
- टेक्स्ट (आवश्यक) - खोजने के लिए टेक्स्ट स्ट्रिंग।
- पैटर्न (आवश्यक) - मिलान करने के लिए नियमित अभिव्यक्ति।
- प्रतिस्थापन (आवश्यक) - मेल खाने वाले सबस्ट्रिंग को बदलने के लिए पाठ।
- Instance_num (वैकल्पिक) - प्रतिस्थापित करने के लिए उदाहरण। डिफ़ॉल्ट "सभी मिलान" है।
- Match_case (वैकल्पिक) - यह नियंत्रित करता है कि मिलान करना है या नहीं (TRUE या छोड़ा गया) या टेक्स्ट केस को अनदेखा करें (FALSE)।
- रेगेक्स का उपयोग करके एक्सेल में स्ट्रिंग्स को कैसे बदलें
- रेगेक्स का उपयोग करके स्ट्रिंग्स को कैसे हटाएं
- रेगेक्स का उपयोग करके व्हाइटस्पेस को कैसे स्ट्रिप करें
- आप किसी VBA कोड को जोड़े बिना और उन्हें मैक्रो-सक्षम फ़ाइलों के रूप में सहेजे बिना सामान्य .xlsx कार्यपुस्तिकाओं में रेगुलर एक्सप्रेशन का उपयोग कर सकते हैं।
- .NET Regex इंजन पूर्ण विशेषताओं वाली क्लासिक का समर्थन करता हैरेगुलर एक्सप्रेशन, जो आपको अधिक परिष्कृत पैटर्न बनाने की सुविधा देता है।
- एबलबिट्स डेटा टैब पर, टेक्स्ट समूह में, Regex Tools पर क्लिक करें।
- Regex Tools फलक पर, निम्न कार्य करें:
- स्रोत डेटा चुनें।
- अपना रेगेक्स पैटर्न दर्ज करें।
- वांछित विकल्प चुनें: मिलान , निकालें , निकालें या बदलें ।
- इस रूप में परिणाम प्राप्त करने के लिए सूत्र और मूल्य नहीं, सूत्र के रूप में सम्मिलित करें चेक बॉक्स का चयन करें।
- कार्रवाई बटन दबाएं।
उदाहरण के लिए, सेल से क्रेडिट कार्ड नंबर निकालने के लिए A2:A6, हम इन सेटिंग्स को कॉन्फ़िगर करते हैं:
- फ़ॉर्मूला बार पर fx बटन क्लिक करें या फ़ॉर्मूला टैब पर इन्सर्ट फंक्शन क्लिक करें।
- इन्सर्ट फंक्शन डायलॉग बॉक्स में, AblebitsUDFs चुनेंश्रेणी, रुचि का कार्य चुनें, और ठीक क्लिक करें। हो गया!
- पैटर्न - है पैटर्न इनपुट स्ट्रिंग में मिलान करने के लिए।
- ग्लोबल - यह नियंत्रित करता है कि इनपुट स्ट्रिंग में सभी मिलानों को ढूंढना है या सिर्फ पहले वाले को। हमारे कार्यों में, यह सभी मैच प्राप्त करने के लिए ट्रू पर सेट है।
- मल्टीलाइन - यह निर्धारित करता है कि मल्टी-लाइन स्ट्रिंग्स में लाइन ब्रेक के पैटर्न का मिलान करना है या केवल पहली पंक्ति में। हमारे कोड में, प्रत्येक पंक्ति में खोजने के लिए इसे True पर सेट किया गया है।
- IgnoreCase - परिभाषित करता है कि एक रेगुलर एक्सप्रेशन केस-संवेदी (डिफ़ॉल्ट) है या केस- असंवेदनशील (ट्रू पर सेट)। हमारे मामले में, यह इस बात पर निर्भर करता है कि आप वैकल्पिक match_case पैरामीटर को कैसे कॉन्फ़िगर करते हैं। डिफ़ॉल्ट रूप से, सभी कार्य केस-संवेदी हैं। .NET, पर्ल, जावा और अन्य रेगेक्स इंजनों में उपलब्ध है। उदाहरण के लिए, VBA RegExp इनलाइन संशोधक का समर्थन नहीं करता है जैसे (?i) केस-असंवेदनशील मिलान के लिए या (?m) बहु-पंक्ति मोड के लिए, लुकबिहाइंड, POSIX वर्ग, कुछ नाम रखने के लिए।
- टेक्स्ट (आवश्यक) - खोजने के लिए एक या अधिक स्ट्रिंग्स।
- पैटर्न ( आवश्यक) - नियमितमिलान करने के लिए अभिव्यक्ति।
- Match_case (वैकल्पिक) - मिलान प्रकार। TRUE या छोड़ा गया - केस-संवेदी; FALSE - केस-असंवेदी
आप फ़ंक्शन का कोड यहां प्राप्त कर सकते हैं।
उदाहरण: रेगुलर एक्सप्रेशन का उपयोग करके स्ट्रिंग कैसे निकालें
थोड़ा और आगे अपना उदाहरण लेते हुए, आइए चालान संख्याएं निकालते हैं। इसके लिए, हम एक बहुत ही सरल रेगेक्स का उपयोग करेंगे जो किसी भी 7-अंकीय संख्या से मेल खाता है:
पैटर्न : \b\d{7}\b
पुट A2 में पैटर्न और आप इस कॉम्पैक्ट और सुरुचिपूर्ण सूत्र के साथ काम करेंगे:
=RegExpExtract(A5, $A$2)
यदि कोई पैटर्न मेल खाता है, तो कोई मिलान नहीं मिलने पर सूत्र एक चालान संख्या निकालता है - कुछ भी नहीं लौटाया गया।
अधिक उदाहरणों के लिए, कृपया देखें: एक्सेल में स्ट्रिंग कैसे निकालेंरेगेक्स का उपयोग करना।
एक्सेल रेगेक्स रिप्लेस फंक्शन
RegExpReplace फंक्शन रेगेक्स से मेल खाने वाले मानों को आपके द्वारा निर्दिष्ट टेक्स्ट से बदल देता है।
RegExpReplace(टेक्स्ट, पैटर्न, रिप्लेसमेंट) , [instance_num], [match_case])कहां:
फ़ंक्शन का कोड यहां उपलब्ध है।
उदाहरण: रेगेक्स का उपयोग करके स्ट्रिंग्स को कैसे बदलें या निकालें
हमारे कुछ रिकॉर्ड में क्रेडिट कार्ड नंबर होते हैं। यह जानकारी गोपनीय है, और हो सकता है कि आप इसे किसी चीज़ से बदलना चाहें या पूरी तरह से हटाना चाहें। दोनों काम RegExpReplace फंक्शन की मदद से पूरे किए जा सकते हैं। कैसे? दूसरे परिदृश्य में, हम एक खाली स्ट्रिंग से बदल देंगे।
हमारी नमूना तालिका में, सभी कार्ड नंबरों में 16 अंक होते हैं, जो 4 समूहों में रिक्तियों के साथ अलग-अलग लिखे जाते हैं। उन्हें खोजने के लिए, हम इस रेगुलर एक्सप्रेशन का उपयोग करके पैटर्न को दोहराते हैं:
पैटर्न : \b\d{4} \d{4} \d{4} \d{4}\ b
प्रतिस्थापन के लिए, निम्नलिखित स्ट्रिंग का उपयोग किया जाता है:
प्रतिस्थापन : XXXX XXXX XXXXXXXX
और क्रेडिट कार्ड नंबरों को असंवेदनशील जानकारी से बदलने के लिए पूरा फॉर्मूला यहां दिया गया है:
=RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4}\b", "XXXX XXXX XXXX XXXX")
अलग-अलग सेल में रेगेक्स और रिप्लेसमेंट टेक्स्ट के साथ ( A2 और B2), सूत्र समान रूप से अच्छी तरह से काम करता है:
Excel में, "निकालना" "प्रतिस्थापन" का एक विशेष मामला है। निकालने क्रेडिट कार्ड नंबरों के लिए, प्रतिस्थापन तर्क के लिए बस एक खाली स्ट्रिंग ("") का उपयोग करें:
=RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4}\b", "")
<3
युक्ति। परिणामों में खाली लाइनों को ठीक करने के लिए, आप एक अन्य RegExpReplace फ़ंक्शन का उपयोग कर सकते हैं जैसा कि इस उदाहरण में दिखाया गया है: रेगेक्स का उपयोग करके रिक्त लाइनों को कैसे हटाएं।
अधिक जानकारी के लिए, कृपया देखें:
मैच, निकालने के लिए रेगेक्स टूल्स , सबस्ट्रिंग को बदलें और हटाएं
हमारे अल्टीमेट सूट के उपयोगकर्ता अपनी कार्यपुस्तिकाओं में कोड की एक भी पंक्ति डाले बिना रेगुलर एक्सप्रेशन की पूरी शक्ति प्राप्त कर सकते हैं। सभी आवश्यक कोड हमारे डेवलपर्स द्वारा लिखे गए हैं और इंस्टालेशन के दौरान आपके एक्सेल में स्मूथी इंटीग्रेटेड हैं।
एक्सेल में रेगेक्स का उपयोग कैसे करें
अल्टीमेट सूट स्थापित होने के साथ, एक्सेल में रेगुलर एक्सप्रेशन का उपयोग करना इन दो चरणों के समान सरल है :
तुरंत, एक AblebitsRegex फ़ंक्शन आपके मूल के दाईं ओर एक नए कॉलम में डाला जाएगा जानकारी। हमारे मामले में, सूत्र है:
=AblebitsRegexRemove(A2, "\b\d{4} \d{4} \d{4} \d{4}\b")
एक बार सूत्र मिल जाने के बाद, आप इसे किसी मूल सूत्र की तरह संपादित, कॉपी या स्थानांतरित कर सकते हैं।
किसी सेल में सीधे Regex सूत्र कैसे सम्मिलित करें
AblebitsRegex फ़ंक्शन ऐड-इन के इंटरफ़ेस का उपयोग किए बिना भी सीधे सेल में सम्मिलित किए जा सकते हैं। यहां बताया गया है कि कैसे:
अधिक जानकारी के लिए, कृपया एक्सेल के लिए रेगेक्स टूल्स देखें।
एक्सेल सेल में टेक्स्ट का मिलान करने, निकालने, बदलने और निकालने के लिए रेगुलर एक्सप्रेशन का उपयोग करने का यही तरीका है। मैं आपको पढ़ने के लिए धन्यवाद देता हूं और अगले सप्ताह आपको हमारे ब्लॉग पर देखने के लिए उत्सुक हूं!
उपलब्ध डाउनलोड
Excel Regex - सूत्र उदाहरण (.xlsm फ़ाइल)
अल्टीमेट सुइट - परीक्षण संस्करण (.exe फ़ाइल)
या .NET आधारित) या रेगेक्स का समर्थन करने वाले तीसरे पक्ष के उपकरण स्थापित करें। यह ट्यूटोरियल आपको रेगुलर एक्सप्रेशन सिखाने का लक्ष्य नहीं रखता है। इसके लिए, शुरुआती लोगों के लिए मुफ़्त ट्यूटोरियल से लेकर उन्नत उपयोगकर्ताओं के लिए प्रीमियम कोर्स तक, ऑनलाइन बहुत सारे संसाधन उपलब्ध हैं।नीचे हम मुख्य RegEx पैटर्न का एक त्वरित संदर्भ प्रदान करते हैं जो आपको मूल बातें समझने में मदद करेगा। आगे के उदाहरणों का अध्ययन करते समय यह आपकी चीट शीट के रूप में भी काम कर सकता है।
यदि आप रेगुलर एक्सप्रेशंस के साथ सहज हैं, तो आप सीधे RegExp फ़ंक्शंस पर जा सकते हैं।
अक्षर
ये कुछ वर्णों से मेल खाने के लिए सबसे अधिक उपयोग किए जाने वाले पैटर्न हैं।
5 बिल्लियों
10 कुत्तों
\w+\.
श्रीमान , श्रीमती , प्रो.
कैरेक्टर क्लासेस
इन पैटर्न का उपयोग करके, आप विभिन्न कैरेक्टर सेट के तत्वों का मिलान कर सकते हैं।
पैटर्न | विवरण | उदाहरण | मिलता है |
[अक्षर] | कोष्ठक में किसी एक वर्ण से मेल खाता है | d[oi]g<15 | dog और dig |
[^characters] | किसी एक वर्ण से मेल खाता है जो कोष्ठक में नहीं है | d[^oi]g | मैच dag, dug , d1g dog और <से मेल नहीं खाता 1>dig |
[से-से] | के बीच की सीमा में किसी भी वर्ण से मेल खाता हैकोष्ठक | [0-9] [a-z] [A-Z] | 0 से 9 तक का कोई एक अंक कोई एक छोटा अक्षर कोई भी अपरकेस अक्षर |
मात्रासूचक
मात्रासूचक विशेष भाव हैं जो मिलान किए जाने वाले वर्णों की संख्या निर्दिष्ट करते हैं। क्वांटिफायर हमेशा इससे पहले के कैरेक्टर पर लागू होता है।
पैटर्न | विवरण | उदाहरण | मैच |
* | शून्य या अधिक घटनाएँ | 1a* | 1, 1a , 1aa, 1aaa , आदि। , po गरीब में, po |
से मेल खाता है? | शून्य या एक घटना | रोआ?डी | सड़क, रॉड |
*? | शून्य या अधिक घटनाएँ, लेकिन यथासंभव कम | 1a*? | 1a , 1aa और 1aaa में, मेल खाता है 1a |
+? | एक या अधिक घटनाएँ, लेकिन यथासंभव कम | po+? | पॉट और खराब में, po |
?? | शून्य या एक घटना से मेल खाता है , लेकिन जितना संभव हो उतना कम | रोआ?? | सड़क और रॉड में, ro |
{n} | पिछले पैटर्न का n बार मिलान करता है | \d{3} | बिल्कुल 3 अंक |
{एन , | पिछले पैटर्न का n या अधिक बार मिलान करें | \d{3,} | 3 या अधिक अंक |
{n,m | से मेल खाता हैn और m बार के बीच पूर्ववर्ती पैटर्न | \d{3,5 | 3 से 5 अंकों तक |
समूहीकरण
समूह निर्माण का उपयोग स्रोत स्ट्रिंग से एक सबस्ट्रिंग को पकड़ने के लिए किया जाता है, ताकि आप इसके साथ कुछ ऑपरेशन कर सकें।
वाक्यविन्यास | विवरण | उदाहरण | मैच |
(पैटर्न) | कैप्चरिंग ग्रुप: मैचिंग सबस्ट्रिंग को कैप्चर करता है और इसे एक क्रमसूचक संख्या प्रदान करता है | (\d+) | 5 बिल्लियों और 10 कुत्तों में, 5 (समूह 1) और 10 (समूह 2)<को कैप्चर करता है 15> |
(?:पैटर्न) | गैर-कैप्चरिंग समूह: एक समूह से मेल खाता है लेकिन इसे कैप्चर नहीं करता | (\d+)(?: कुत्ते) | 5 बिल्लियां और 10 कुत्ते में, 10 |
\1 | समूह की सामग्री कैप्चर करता है 1 | (\d+)\+(\d+)=\2\+\1 | 5+10=10+5 से मेल खाता है और 5 को कैप्चर करता है और 10 , जो ग्रुप कैप्चर करने में हैं |
\2 | ग्रुप 2 की सामग्री |
एंकर
एंकर इनपुट स्ट्रिंग में एक स्थिति निर्दिष्ट करते हैं जहां देखना है एक मैच।
एंकर | विवरण | उदाहरण | मैच |
^ | स्ट्रिंग की शुरुआत ध्यान दें: [^कोष्ठक के अंदर] का अर्थ है "नहीं" | ^\d+ | कोई भी संख्या में अंक स्ट्रिंग की शुरुआत। 5 बिल्लियों और 10 कुत्तों में, 5 |
$ | <14 से मेल खाता है>स्ट्रिंग का अंत\d+$ | स्ट्रिंग के अंत में अंकों की कोई भी संख्या। 10 मेंY | |
(?<=) | सकारात्मक पीछे देखना | (?<=Y)X | अभिव्यक्ति X से मेल खाता है जब इसके पहले Y आता है (यानी अगर X के पीछे Y है) |
(? | नकारात्मक लुकबैक | (? | अभिव्यक्ति X से मेल खाता है जब यह Y से पहले नहीं आता है |
अब जब आप आवश्यक बातें जानते हैं, तो चलिए सबसे दिलचस्प भाग पर चलते हैं - का उपयोग करके स्ट्रिंग्स को पार्स करने और आवश्यक जानकारी खोजने के लिए वास्तविक डेटा पर रेगेक्स। यदि आपको सिंटैक्स के बारे में अधिक विवरण की आवश्यकता है, तो रेगुलर एक्सप्रेशन भाषा पर Microsoft गाइड मददगार साबित हो सकता है।
Excel के लिए कस्टम RegEx फ़ंक्शन
जैसा कि पहले ही उल्लेख किया गया है, Microsoft Excel में कोई अंतर्निहित RegEx फ़ंक्शन नहीं है। रेगुलर एक्सप्रेशन को सक्षम करने के लिए, हमने तीन कस्टम VBA फ़ंक्शंस (उर्फ उपयोगकर्ता-परिभाषित फ़ंक्शन) बनाए हैं। आप नीचे दिए गए पृष्ठों से या हमारे नमूने से कोड कॉपी कर सकते हैं कार्यपुस्तिका, और फिर अपनी खुद की एक्सेल फाइलों में पेस्ट करें। उन लोगों के लिए बधाई जो जानना चाहते हैं कि वास्तव में बैकएंड पर क्या होता है। आपको VBA संपादक में संदर्भ सेट करने की परेशानी से बचाने के लिए, हमने बाद वाला तरीका चुना।
RegExp ऑब्जेक्ट में 4 गुण हैं:
Excel Regex मैच फंक्शन
RegExpMatch फंक्शन टेक्स्ट के लिए एक इनपुट स्ट्रिंग खोजता है जो रेगुलर एक्सप्रेशन से मेल खाता है और मैच मिलने पर TRUE लौटाता है, अन्यथा FALSE देता है।
RegExpMatch(टेक्स्ट, पैटर्न, [ match_case])कहां:
फ़ंक्शन का कोड यहां है।
उदाहरण: स्ट्रिंग से मिलान करने के लिए रेगुलर एक्सप्रेशन का उपयोग कैसे करें
नीचे दिए गए डेटासेट में, मान लीजिए कि आप चाहते हैं SKU कोड वाली प्रविष्टियों की पहचान करने के लिए।
यह देखते हुए कि प्रत्येक SKU 2 बड़े अक्षरों से शुरू होता है, उसके बाद एक हाइफ़न होता है, जिसके बाद 4 अंक होते हैं, आप निम्न अभिव्यक्ति का उपयोग करके उनका मिलान कर सकते हैं।
पैटर्न : \b[A-Z]{2}-\d{4}\b
जहां [A-Z]{2} का अर्थ है A से Z तक कोई भी 2 अपरकेस अक्षर और \d{4 } का अर्थ 0 से 9 तक कोई भी 4 अंक है। एक शब्द सीमा \b इंगित करती है कि एक SKU एक अलग शब्द है और एक बड़ी स्ट्रिंग का हिस्सा नहीं है।
स्थापित पैटर्न के साथ, एक सूत्र टाइप करना शुरू करें जैसे आप सामान्य रूप से करते हैं , और फ़ंक्शन का नाम Excel के AutoComplete द्वारा सुझाई गई सूची में दिखाई देगा:
मूल स्ट्रिंग को A5 में मानते हुए, सूत्र इस प्रकार है:
=RegExpMatch(A5, "\b[A-Z]{2}-\d{3}\b")
सुविधा के लिए, आप रेगुलर एक्सप्रेशन को एक अलग सेल में इनपुट कर सकते हैं और पैटर्न आर्गुमेन के लिए एक पूर्ण संदर्भ ($A$2) का उपयोग कर सकते हैं टी। यह सुनिश्चित करता है कि जब आप अन्य सेल में सूत्र की प्रतिलिपि बनाते हैं तो सेल का पता अपरिवर्तित रहेगा:
=RegExpMatch(A5, $A$2)
TRUE और FALSE के बजाय अपने स्वयं के टेक्स्ट लेबल प्रदर्शित करने के लिए, IF फ़ंक्शन में RegExpMatch को नेस्ट करें और वांछित टेक्स्ट को value_if_true और value_if_false में निर्दिष्ट करेंप्लस 5 देता है 15 , मैच 15
अल्टरनेशन (OR) कंस्ट्रक्शन
अल्टरनेशन ऑपरेंड OR लॉजिक को सक्षम करता है, जिससे आप या तो इस या उस एलिमेंट का मिलान कर सकते हैं।
कंस्ट्रक्ट | विवरण | उदाहरण | मैच |