मैं कुछ ठोस उदाहरण के साथ जेम्स 'जवाब देने के लिए जोड़ना चाहते हैं। मैंने नियमित ऑपरेटर के आधार पर टेक्स्ट के अनुभागों को खींचने के लिए इस ऑपरेटर का उपयोग किया है।
मैं एक उपकरण है जो नेट के माध्यम से एक दूरस्थ सर्वर :: SSH पर आदेशों चल शामिल लिख रहा था। इस विशेष सर्वर को एमओटीडी प्रिंट करने की परेशान आदत थी, भले ही सत्र एक लॉगिन सत्र था या नहीं। इसके परिणामस्वरूप मैंने बहुत कम कचरा वापस प्राप्त किया जब मैंने आदेश चलाया और आउटपुट पुनर्प्राप्त किया। चूंकि मेरे पास सर्वर सेटअप में बहुत अधिक प्रभाव नहीं था, इसलिए मैंने एक छोटी सी लिपि बनाई जो एक डिलीमीटर को मुद्रित करता था, प्रोग्राम चलाता था, और फिर एक और डिलीमीटर मुद्रित करता था। आउटपुट इस तरह कुछ देखा।
Welcome to Server X!
+----------------------------------------------------------------------+
| Use of this server is restricted to authorized users only. User |
| activity may be monitored and disclosed to law enforcement personnel |
| if any possible criminal activity is detected. |
+----------------------------------------------------------------------+
----------------------------------------------
Setting up environment for user Adam.
----------------------------------------------
>>>>>>>>>>>>>>>>>>>>>>>>>
Program Output
<<<<<<<<<<<<<<<<<<<<<<<<<
फ्लिप फ्लॉप ऑपरेटर उत्पादन मैं जरूरत के साथ सिर्फ कोड की धारा बाहर निकलने के लिए एक उपयोगी शॉर्टकट था। मैंने एक रेगेक्स का उपयोग किया जो मैच शुरू करने के लिए 25 से अधिक थानों ">" से मेल खाता था, और मैच को समाप्त करने के लिए 25 कम-थान "<" से मेल खाता था।
output.each { |line| puts line if line[/^>{25}/] .. line[/^<{25}/] }
आउटपुट
>>>>>>>>>>>>>>>>>>>>>>>>>
Program Output
<<<<<<<<<<<<<<<<<<<<<<<<<
अधिकांश उदाहरण मैंने देखा है एक फ़ाइल या सरणियों नियमित अभिव्यक्ति के आधार पर से बाहर डेटा का हिस्सा खींच शामिल है। दिमाग में आने वाले कुछ अन्य उदाहरण गिट मर्ज टकरावों को खींच रहे हैं, विरासत फ्लैट फ़ाइल सिस्टम (जैसे फ़ाइल में लिखे गए structs) से कुछ रिकॉर्ड, और लॉग फाइलें।
असल में, किसी भी समय आपको केवल एक व्यक्तिगत पंक्ति की सामग्री के बजाय डेटा शुरू करने और समाप्त करने के आधार पर अनुभागों को खींचने की आवश्यकता होगी। यह सिर्फ एक साधारण रेगेक्स की तुलना में थोड़ा अधिक जटिल है, लेकिन एक पार्सर लिखने से कम जटिल है।
स्रोत
2013-01-30 20:09:08
-1: अनचाहे कोड। आपको क्या लगता है, perl? आपको प्रिंट करें ($ _ = ~/third /) .. ($ _ = ~/third /) '(मुझे पता है कि यह आपका कोड नहीं है, लेकिन बहिष्कृत सुविधाओं का उपयोग करने वाले कोड को फैलाने की कोई आवश्यकता नहीं है)। – rampion
इसके लिए वास्तविक उपयोग क्या है? मुझे फ़ाइल से 3 से 5 वीं लाइनों को प्रिंट करने की आवश्यकता हो सकती है (कोडिंग के लायक होने के लिए पर्याप्त समय)? – kajaco
लगभग 3 और 5 भूल जाएं। यह एक प्रारंभ टैग और एक अंत टैग द्वारा सीमित फ़ाइल के एक खंड को निकालने के बारे में है। मुझे आशा है कि आप बेहतर देखेंगे कि यह एक वास्तविक दुनिया का उदाहरण क्यों है .. अब समकक्ष गैर-फ्लिप-फ्लॉप संस्करण में राज्य के लिए चर जोड़ने को शामिल किया जाएगा, यदि अधिक बयान: अधिक जटिल कोड। – inger