2009-11-07 18 views

उत्तर

7

नियमित अभिव्यक्ति पैटर्न मिलान का एक रूप है जिसे आप पाठ्य सामग्री पर लागू कर सकते हैं। उदाहरण के लिए डॉस वाइल्डकार्ड ले लो? और * जब आप फ़ाइल फ़ाइल खोज रहे हैं तो आप इसका उपयोग कर सकते हैं। यह RegExp का एक बहुत ही सीमित सबसेट है। उदाहरण के लिए, यदि आप "एफएन" से शुरू होने वाली सभी फाइलें, 1 से 4 यादृच्छिक वर्णों के बाद, और "ht.txt" के साथ समाप्त करना चाहते हैं, तो आप सामान्य डॉस वाइल्डकार्ड के साथ ऐसा नहीं कर सकते हैं। दूसरी तरफ RegExp, उस और अधिक जटिल पैटर्न को संभाल सकता है।

रेगुलर एक्सप्रेशन वे एक तरह से प्रभावी ढंग से

  • संभाल डेटा
  • खोज और तार
  • बढ़ाया प्रदान स्ट्रिंग से निपटने को बदलने के लिए संक्षेप में, कर रहे हैं।

अक्सर एक नियमित अभिव्यक्ति स्वयं स्ट्रिंग हैंडलिंग प्रदान कर सकती है कि अंतर्निहित स्ट्रिंग विधियों और गुणों जैसी अन्य कार्यक्षमता केवल तभी हो सकती है जब आप उन्हें जटिल फ़ंक्शन या लूप में उपयोग करते हैं।

+0

+1 बहुत अच्छा सादृश्य! –

4

जब आप जटिल स्ट्रिंग पैटर्न को ढूंढ/प्रतिस्थापित/सत्यापित करने का प्रयास कर रहे हैं।

2

कुछ ऐसे मामले हैं जहां आपको बेहतर प्रदर्शन की आवश्यकता है, तो आपको लेखन कोड के पक्ष में नियमित अभिव्यक्तियों से बचना चाहिए। इसका एक उदाहरण बहुत बड़ी सीएसवी फाइलों को पार्स कर रहा है।

2

नियमित अभिव्यक्ति पाठ को पार्स करने के लिए एक डीएसएल (डोमेन विशिष्ट भाषा) हैं। Xpath की तरह xml ट्रैवर्स करने के लिए एक डीएसएल है। यह सामान्य उद्देश्य भाषा के अंदर अनिवार्य रूप से एक मिनी भाषा है। आप बहुत कम मात्रा में कोड को पूरा कर सकते हैं क्योंकि यह एक संकीर्ण उद्देश्य के लिए विशिष्ट है। नियमित अभिव्यक्तियों के लिए एक बहुत ही आम उपयोग यह जांच रहा है कि कोई स्ट्रिंग एक ईमेल पता, फोन नंबर, एसएसएन, आदि है ...

4

स्ट्रिंग्स (preg_match) की तुलना करते समय मैं नियमित अभिव्यक्तियों का उपयोग करता हूं, सबस्ट्रिंग्स (sed, preg_replace) को प्रतिस्थापित करता हूं, प्रतिस्थापित करता हूं अक्षर (sed, preg_replace), फ़ाइलों में स्ट्रिंग्स (grep), विभाजन स्ट्रिंग्स (preg_split) इत्यादि की खोज

यह एक बहुत ही लचीला और व्यापक पैटर्न अभिव्यक्ति भाषा है और यह जानना बहुत उपयोगी है।

लेकिन! ऐसा लगता है जैसे वे पोकर के बारे में कहते हैं, सीखना बहुत आसान है, लेकिन मास्टर के लिए बहुत मुश्किल है।

मैं अभी question पर आया था जो मैंने सोचा था कि रेगेक्स के लिए बिल्कुल सही था, एक नज़र डालें और खुद के लिए निर्णय लें।

2

कुछ मामलों में नियमित अभिव्यक्ति हैं >> नहीं < < उचित (सामान्य रूप में, वहाँ हमेशा अपवाद हैं)।

  • पार्सिंग HTML
  • पार्सिंग एक्सएमएल

ऊपर मामलों में एक डोम पार्सर लगभग हमेशा एक बेहतर विकल्प है। व्याकरण जटिल हैं और बहुत सारे किनारे के मामले हैं, जैसे नेस्टेड टैग।

भविष्य के रखरखाव प्रोग्रामर (जो आप हो सकते हैं) पर विचार करना सुनिश्चित करें। टिप्पणियां और/या अच्छी तरह से चुनी गई विधि/निरंतर/परिवर्तनीय नाम अंतर की दुनिया बना सकते हैं, खासकर डेवलपर्स के लिए नियमित अभिव्यक्तियों में धाराप्रवाह नहीं।

+0

वहां "नहीं" शब्द पर अधिक जोर दिया जाना चाहिए, जबकि स्कैनिंग करते हुए मैंने लगभग सोचा था कि आप एचटीएमएल और एक्सएमएल – Kris

+0

@ क्रिस के लिए रेगेक्स के उपयोग की वकालत कर रहे थे: अधिक काउबेल जोड़ा गया! ;) – TrueWill

0

नियमित अभिव्यक्तियां मुफ्त टेक्स्ट इनपुट के प्रारूप को सत्यापित करने के लिए विशेष रूप से उपयोगी हो सकती हैं। बेशक वे डेटा की शुद्धता को मान्य नहीं कर सकते हैं, बस इसका प्रारूप। और आपको कुछ प्रकार के मूल्यों के लिए क्षेत्रीय विविधताओं को ध्यान में रखना होगा (उदाहरण के लिए फोन नंबर या पोस्टल कोड)। लेकिन उन मामलों के लिए जहां वैध इनपुट को टेक्स्ट पैटर्न के रूप में परिभाषित किया जा सकता है, regexes सत्यापन के त्वरित कार्य करते हैं।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^