नियमित अभिव्यक्तियों को व्यवस्थित रूप से सीखें (I): मूल बातें
क्या है सही अभिव्यक्ति
एक नियमित अभिव्यक्ति एक विशिष्ट स्ट्रिंग स्ट्रिंग है जो पहले से परिभाषित विशिष्ट वर्णों और उन विशिष्ट वर्णों के संयोजन का उपयोग करता है जो एक फ़िल्टर तर्क को व्यक्त करने के लिए एक स्ट्रिंग स्ट्रिंग स्ट्रिंग का निर्माण करते हैं।
-
नियमित अभिव्यक्ति के माध्यम से निम्नलिखित उद्देश्यों को प्राप्त किया जा सकता हैः
给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”); 可以通过正则表达式,从字符串中获取我们想要的特定部分。और यह भी एक बहुत अच्छा मैक सॉफ्टवेयर की सिफारिश की है. Regextor, एक सॉफ़्टवेयर है जो नियमित अभिव्यक्ति को सत्यापित करता है, और मैक के लिए बहुत सारे अच्छे सॉफ़्टवेयर की सिफारिश करता है।
निम्नलिखित में, हम नियमित अभिव्यक्ति के विभिन्न नियमों के बारे में बात करेंगे:
-
सामान्य पाठ वर्णों से मेल खाता है
एक नियमित अभिव्यक्ति में केवल सामान्य पाठ हो सकता है, जो इस पाठ से सटीक रूप से मेल खाता है। उदाहरण के लिएः
औपचारिक अभिव्यक्ति:
song
Xiaoosongge, xiao Songge के साथ जोड़ा गया
मिलान के बाद के परिणाम: xiaosongge,xiaoSongge
नियमित अभिव्यक्ति में, डिफ़ॉल्ट रूप से, अपरकेस होता है, इसलिए song "Song" से मेल नहीं खाता है। लेकिन अधिकांश नियमित अभिव्यक्ति कार्यान्वयन एक विकल्प प्रदान करते हैं जो अपरकेस को अलग नहीं करता है।
-
वैकल्पिक वर्ण मिलान करें
. किसी भी अक्षर से मेल खाने के लिए, जैसेः
नियमित अभिव्यक्ति: c.t
cat cat cat cat cat cat cat cat cat cat cat
मिलान के बाद के परिणाम:catcetcaaat dog
विश्लेषणः c.t एक स्ट्रिंग से मेल खाता है जो "c" से शुरू होता है, "t" के साथ समाप्त होता है, और बीच में किसी भी वर्ण के रूप में होता है।इसी तरह, एक से अधिक लगातार. एक से अधिक लगातार किसी भी वर्ण से मेल खा सकता हैः
औपचारिक अभिव्यक्ति: c..t
cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat
परिणाम मिलानः cat cetcaatdog
-
मिलान विशेष वर्ण
. नियमित अभिव्यक्ति में विशेष अर्थों को शामिल करता है, एक विशेष वर्ण है. .\ भी विशेष वर्ण है, जो विशेष वर्ण के लिए अनुवाद का कार्य कर सकता है. यदि आप एक वास्तविक . " वर्ण को मिलान करना चाहते हैं, तो आपको . के आगे जोड़ना होगा..यह वास्तविक " . " अक्षरों को दर्शाता है.
नियमित अभिव्यक्ति: c.t
cat c.t dog के साथ जोड़ा गया
परिणाम मिलान के बादः catc.tdog
ध्यान देंः चूंकि \ भी एक विशेष वर्ण है, इसलिए एक वास्तविक "" वर्ण से मेल खाने के लिए दो उलटा रेखाओं का उपयोग करना आवश्यक है\:नियमित अभिव्यक्ति: c\t
मिलान करने के लिए प्रतीक्षा करें
परिणाम मिलान के बादः catc\tdog
-
वर्ण सेट का उपयोग करना
ऊपर कहा गया है. मैं किसी भी अक्षर से मेल कर सकता हूँ, लेकिन अगर मैं कुछ विशिष्ट अक्षरों से मेल करना चाहता हूँ तो क्या होगा?[और [प्रथम वर्ण <unk>]
नियमित अभिव्यक्ति: c[ab]t
cat cbt cet के साथ मेल खाने के लिए
मिलान के बाद के परिणाम:catcbtcet
विश्लेषण:[ab] एक "a" या "b" से मेल खाती है. तो c[ab]t "cat" और "cbt" के साथ मेल खाता है और "cet" के साथ मेल नहीं खाता है।
-
वर्णसमूह का उपयोग करें
तो हम देखेंगे कि हम क्या कर सकते हैं अगर हम CET के साथ मिलान करना चाहते हैं[तो अगर मैं किसी भी छोटे अक्षरों के साथ मेल करना चाहता हूँ, तो क्या मैं उनमें से कुछ दर्जन लिख सकता हूँ? यह ठीक है, लेकिन यह बहुत लंबा है। यहाँ हम इसका उपयोग कर सकते हैं[a-z]:
नियमित अभिव्यक्ति: c[a-z]t
cat cbt czt c2t
मिलान के बाद के परिणाम:catcbtcztc2t
विश्लेषण: c[a-z]t किसी भी अक्षर को दर्शाता है जो "c" से शुरू होता है, "t" के साथ समाप्त होता है, और बीच में "a" - "z" अक्षरों में से एक होता है।और इसी तरह के अन्य फ़्रेम हैंः
[0-9] और[0123456789] के समान कार्य करता है. सभी संख्याओं से मेल खाता है.
[A-F] A से F तक के बड़े अक्षरों से मेल खाता है।
[A-Z] सभी A से Z तक के बड़े अक्षरों से मेल खाता है।
[a-z] सभी छोटे अक्षरों को मेल खाता है a से z तक
[A-z] ASCII A से ASCII z तक के सभी अक्षरों का मिलान करता है, न केवल सभी अक्षरों का, बल्कि ASCII तालिका में A से z तक के अक्षरों का भी मिलान करता है, जैसे[और ^ आदि) <unk>
[A-Za-z0-9] सभी छोटे अक्षरों और संख्याओं के साथ मेल खाता है。
-
गैर-कैरेक्टर सेट मिलान
वर्ण सेट आमतौर पर उन वर्णों के एक समूह को निर्दिष्ट करने के लिए उपयोग किया जाता है जिन्हें मिलान करने की आवश्यकता होती है। लेकिन कभी-कभी, आप उन वर्णों के एक समूह को बाहर करना चाहते हैं जिन्हें आप मिलान नहीं करना चाहते हैं। इसे वर्ण सेट के लिए अस्वीकृति द्वारा किया जा सकता है। उदाहरण के लिएः
नियमित अभिव्यक्ति: c[^a-z]t
cat cbt czt c2t cAt
परिणाम मिलान के बादः cat cbt cztc2tcAt
विश्लेषणः यह पिछले उदाहरण के विपरीत है।[a-z] सभी छोटे अक्षरों से मेल खाता है, जबकि [^a-z] सभी गैर-छोटे अक्षरों से मेल खाता हैध्यान दें, ^ वर्ण वर्ण सेट में सभी वर्णों के मिलान को रद्द करता है।
-
मूल अक्षर
एक नियमित अभिव्यक्ति में एक विशेष अर्थ होता है, जैसे कि हम पहले से ही कुछ के बारे में बात कर चुके हैं।[और] <unk> इन अक्षरों को अपने अर्थों को सीधे व्यक्त नहीं किया जा सकता है, उदाहरण के लिए, सीधे उपयोग नहीं किया जा सकता है[मिलान करने के लिए"[", उपयोग. मिलान करने के लिए" . . . "
सभी मेटा वर्णों को पहले एक उलटा-छाया अनुवाद के साथ जोड़ा जा सकता है, और जब अनुवाद किया जाता है, तो वर्ण अपने आप से मेल खाते हैं न कि उनके विशेष अर्थों से। उदाहरण के लिए,[मिलान करेगा"[ ":
नियमित अभिव्यक्ति: a[b
मिलान करने के लिए टेक्स्टः a[b ab a[[b
मिलान के बाद के परिणाम:a[bab a[[b
ध्यान देंः \ को एक उपसर्ग के रूप में प्रयोग किया जाता है, जिसका अर्थ है कि \ भी एक उपसर्ग है। इसलिए यदि आपको वास्तविक "" से मेल खाने की आवश्यकता हो, तो इसका उपयोग किया जा सकता है।\:नियमित अभिव्यक्ति: a\b
मिलान करने के लिए टेक्स्टः a\b a\b a[[b
परिणाम मिलान के बादः a\ba\ba[[b
-
रिक्त अक्षर
कभी-कभी आपको उन रिक्त वर्णों से मिलान करने की आवश्यकता हो सकती है जो पाठ में मुद्रित नहीं किए जा सकते हैं। उदाहरण के लिए, आप सभी टैब वर्णों या सभी रेखा-परिवर्तनों को ढूंढना चाहते हैं। आप निम्न तालिका में विशेष मेटा वर्णों का उपयोग कर सकते हैंः
उदाहरण के लिए, Windows में एक फ़ाइल के लिए एक बैक-टू-बैक कॉम्बिनेशन का प्रतिनिधित्व करने के लिए एक बैक-टू-बैक कॉम्बिनेशन का मिलान करता है। लिनक्स और यूनिक्स सिस्टम में, केवल इसका उपयोग करने की आवश्यकता होती है।
-
विशिष्ट वर्ण प्रकार से मेल खाता है
कुछ विशेष मेटा वर्ण हैं जिनका उपयोग सामान्य वर्णों के सेट से मेल खाने के लिए किया जा सकता है। इन मेटा वर्णों को मिलान वर्ण वर्ग कहा जाता है। आप उन्हें उपयोग करने में बहुत सुविधाजनक पाएंगे।
मिलान संख्या या गैर-संख्या
और यह भी कहा गया है,[0-9] सभी संख्याओं का मिलान कर सकते हैं. यदि आप किसी भी संख्या का मिलान नहीं करना चाहते हैं, तो आप उपयोग कर सकते हैं[^0-9]。 निम्नलिखित तालिका में संख्यात्मक और गैर-संख्यात्मक उपसर्गों को सूचीबद्ध किया गया हैःनियमित अभिव्यक्ति: c\dt
मिलान के लिए प्रतीक्षा करेंः cat c2t czt c9t
परिणाम मिलान के बादः catc2tcztc9tनियमित अभिव्यक्ति: c\Dt
मिलान के लिए प्रतीक्षा करेंः cat c2t czt c9t
मिलान के बाद के परिणाम:catc2tcztc9t
वर्णमाला और वर्णमाला वर्णों का मिलान करें
एक अन्य सामान्य रूप से उपयोग किया जाने वाला वर्ग उप-वर्ण है:नियमित अभिव्यक्ति: c\wt
मिलान के लिए प्रतीक्षा करेंः cat c2t czt c-t c\t
मिलान के बाद के परिणाम:catc2tc-t c\tनियमित अभिव्यक्ति: c\Wt
मिलान करने के लिए प्रतीक्षा करेंः cat c2t c-t c\t
परिणाम मिलानः cat c2tc-tc\t
रिक्त स्थान और गैर रिक्त स्थान का मिलान करें
अंतिम मिलान श्रेणी खाली श्रेणी है:नियमित अभिव्यक्ति: c\st
मिलान के लिए प्रतीक्षा करेंः cat c t c2t c\t
परिणाम मिलान के बादः catc tc2t c\tनियमित अभिव्यक्ति: c\St
मिलान के लिए प्रतीक्षा करेंः cat c t c2t c\t
मिलान के बाद के परिणाम:catc tc2tc\t
-
एक या अधिक अक्षरों से मेल खाता है
उदाहरण के लिए, a "a" से मेल खाता है, जबकि a+ एक या अधिक "a" से मेल खाता है।
औपचारिक अभिव्यक्ति: cat
अनुच्छेद के लिए प्रतीक्षा करेंः ct cat caat caaat
मिलान के बाद के परिणाम: ctcatcaat caaatऔपचारिक अभिव्यक्ति: ca+t
अनुच्छेद के लिए प्रतीक्षा करेंः ct cat caat caaat
मिलान के बाद के परिणाम: ctcatcaatcaaat
जब वर्ण सेट पर + का उपयोग किया जाता है, तो + चिह्न को सेट के बाहर रखा जाना चाहिएःनियमित अभिव्यक्ति: c[0-9]+t
Ct c0t cat c123t
मिलान के बाद के परिणाम: ctc0tcatc123t
विश्लेषण: c[0-9]+t एक स्ट्रिंग को दर्शाता है जो "c" से शुरू होती है, "t" के साथ समाप्त होती है, और बीच में एक या अधिक संख्याएँ होती हैं।बेशक।[0-9+] भी एक वैध नियमित अभिव्यक्ति है, लेकिन यह " 0 " - " 9 " और " + " चिह्नों वाले वर्णों के एक समूह को दर्शाता है।
आम तौर पर, . और + जैसे अक्षरों का उपयोग अक्षरों के संग्रह के लिए किया जाता है, इसलिए इसका अनुवाद करना आवश्यक नहीं है। लेकिन इसका अनुवाद करना भी ठीक है, इसलिए,[0-9+] और[0-9+] का कार्य समान है <unk>
ध्यान देंः + एक पूर्णांक है, जो "+" से मेल खाता है+。
-
शून्य या अधिक वर्णों से मेल खाता है
यदि आप शून्य या अधिक वर्णों को मिलान करना चाहते हैं, तो आप*मूल अक्षर <unk>
औपचारिक अभिव्यक्ति: cat
ct cat caat cbt
मिलान के बाद के परिणाम:ctcatcaatcbt
सूचना:चिह्न एक उप-वर्ण है. "" से मेल खाने के लिए, एक अनुवाद की आवश्यकता होती है。
-
शून्य या एक वर्ण के साथ मेल खाता है
<unk> शून्य या एक वर्ण से मेल खाता है <unk> इसलिए, <unk> पाठ में एक वैकल्पिक वर्ण से मेल खाने के लिए बहुत उपयुक्त है <unk>
औपचारिक अभिव्यक्ति: ca?t
ct cat caat cbt
मिलान के बाद के परिणाम:ctcatcaat cbt
ध्यान दें: ? प्रतीक एक उपसर्ग है. "?" से मेल खाने के लिए, अनुवाद की आवश्यकता है।?。
-
मिलानों की संख्या
एक नियमित अभिव्यक्ति मिलान की संख्या निर्दिष्ट करने की अनुमति देती है। संख्या को <unk> { <unk> और <unk> } <unk> के बीच निर्दिष्ट किया जा सकता है।
ध्यान दें: { और } भी एक अक्षर है, जिसका शाब्दिक अर्थ के लिए अनुवाद की आवश्यकता है।सटीक मिलान
मिलान की संख्या को निर्दिष्ट करने के लिए, आप { और } के बीच में एक संख्या दर्ज कर सकते हैं। उदाहरण के लिए, { 3 } 3 बार पहले दिखाई देने वाले वर्ण या सेट से मेल खाएगाःनियमित अभिव्यक्ति: ca{3}t
ct cat caaat सीबीटी
मिलान के बाद का परिणाम: ct catcaaatcbt
न्यूनतम मिलान
उदाहरण के लिए, {2,} का अर्थ है 2 या अधिक बार मिलानःनियमित अभिव्यक्ति: ca{1,}t
ct cat caaat सीबीटी
मिलान के बाद के परिणाम: ctcatcaaatcbt
आयामों के बीच मिलान
हम मिलान की संख्या निर्धारित करने के लिए न्यूनतम और अधिकतम मानों का भी उपयोग कर सकते हैं। उदाहरण के लिए, {2,3} का अर्थ है कि कम से कम 2 और अधिकतम 3 मिलान।नियमित अभिव्यक्ति: ca{2,3}t
ct cat caaat सीबीटी
मिलान के बाद का परिणाम: ct catcaaatcbt
तो? और {0,1} का फ़ंक्शन एक ही है, और {1,} का फ़ंक्शन एक ही है.
-
गैर-लोभी मिलान
एक उदाहरण देखेंः
औपचारिक अभिव्यक्ति: s.*g
Xiao Song Xiao Song से जुड़े अन्य वीडियो "
परिणाम मिलान के बादः xiao song xiao song
विश्लेषण: s.*g दो "गीत" को मेल नहीं खाता है, लेकिन पहले "s" और अंतिम "g" के बीच के सभी ग्रंथों को मेल खाता है।क्योंकि*और + एक लालची मिलान है. यानी, एक नियमित अभिव्यक्ति हमेशा सबसे बड़ा मिलान ढूंढती है, न कि सबसे छोटा, जो कि जानबूझकर बनाया गया है.
लेकिन अगर आप लालची मिलान नहीं करना चाहते हैं, तो इन मात्राओं के गैर-लाभकारी मिलानों का उपयोग करें (जितना संभव हो उतना कम वर्ण मिलान करें) ।
*हाँ?*यह एक गैर-लोभी संस्करण है, इसलिए इसका उपयोग किया जा सकता है।*उदाहरण को बदलने के लिएः
औपचारिक अभिव्यक्ति: s.?g
Xiao Song Xiao Song से जुड़े अन्य वीडियो "
मिलान के बाद के परिणाम: xiaosongxiaosong
विश्लेषणः आप देख सकते हैं s.<unk>g ने दो गीतों का मिलान किया <unk>
-
स्ट्रिंग सीमा को परिभाषित करें
स्ट्रिंग बॉर्डर के लिए मिलान किए जाने वाले मेटा-चिह्न ^ और $ हैं, जो क्रमशः स्ट्रिंग की शुरुआत और अंत के लिए उपयोग किए जाते हैं।
↑ इस प्रकार है:
औपचारिक अभिव्यक्ति: ^xiao
Xiaoosong के साथ मेल खाता है
मिलान के बाद के परिणाम:xiaosong"अक्षयसंग" से जुड़े हुए पृष्ठ
परिणाम मिलानः axiaosong
विश्लेषणः^xiao "xiao" से शुरू होने वाली स्ट्रिंग से मेल खाता है.$ का प्रयोग इस प्रकार है:
आधिकारिक अभिव्यक्ति: song$
Xiaoosong के साथ मेल खाता है
मिलान के बाद के परिणाम: xiaosongयह भी देखेंः
मिलान के बाद के परिणाम:xiaosonga
विश्लेषणः song$ "song" के साथ समाप्त होने वाली स्ट्रिंग से मेल खाता हैसाझा करेंः
नियमित अभिव्यक्ति: ^[0-9a-zA-Z]{4,}$
मिलान करने के लिए टेक्स्टः a1b234ABC
मिलान के बाद के परिणाम:a1b234ABC- a1b23 = 4ABC
मिलान के बाद परिणामः + a1b23 = 4ABC
विश्लेषणः ^[0-9a-zA-Z]{4,}$ एक संख्या या अक्षर से मिलकर एक स्ट्रिंग होती है, और इसकी संख्या चार अंकों के बराबर होती है।
नोटः^ यदि यह सेट की शुरुआत में है, तो यह नकारात्मक है; यदि यह सेट के बाहर है, तो यह स्ट्रिंग की शुरुआत की स्थिति से मेल खाती है।[^0-9] और ^[0-9] का अंतर <unk>
- a1b23 = 4ABC
-
बहु-पंक्ति मोड का उपयोग करें
लेकिन ((?m) बहु-पंक्ति मोड को सक्षम कर सकता है। बहु-पंक्ति मोड में, नियमित अभिव्यक्ति इंजन स्ट्रिंग के लिए एक विभाजक के रूप में प्रतिस्थापन करता है, ^ पाठ की शुरुआत या एक पंक्ति की शुरुआत से मेल खाता है, जबकि $ पाठ के अंत या एक पंक्ति के अंत से मेल खाता है।
पिछले उदाहरण को संशोधित करेंः
एक नियमित अभिव्यक्ति:[0-9a-zA-Z]{4,}$
मिलान करने के लिए टेक्स्टः a1b234ABC
+a1b23=4ABC
ABC123456मिलान के बाद के परिणाम:
a1b234ABC
+a1b23=4ABC
ABC123456
विश्लेषण:[0-9a-zA-Z]{4,}$ प्रत्येक पंक्ति में संख्याओं या अक्षरों के साथ मेल खाता है, और अंकों की संख्या चार अंकों के बराबर स्ट्रिंग से अधिक होती है।नोटः यदि बहु-पंक्ति मोड का उपयोग किया जाता है, तो ((?m) को नियमित अभिव्यक्ति की शुरुआत में रखा जाना चाहिए।
(? m) को अधिकांश नियमित अभिव्यक्ति कार्यान्वयनों में समर्थित नहीं किया जाता है। कुछ नियमित अभिव्यक्ति कार्यान्वयन \A मिलान स्ट्रिंग की शुरुआत और \Z मिलान स्ट्रिंग के अंत का समर्थन करते हैं। यदि समर्थित है, तो इन मेटा वर्णों का कार्य ^, $ के समान है। लेकिन इन मेटा वर्णों का उपयोग नहीं किया जा सकता है।
इस लेख को पढ़ने के बाद, आप अगले लेख को पढ़ सकते हैं व्यवस्थित रूप से सही अभिव्यक्ति ((ii) सीखने के लिएः प्रगतिशील लेख <unk>。
आईओएस से पुनर्निर्देशित
- 1






