2009-03-23 11 views
8

क्या किसी के पास एक फ़ाइल खोजने के लिए कोड है जिसमें नियमित अभिव्यक्ति होती है? मुझे लगता है कि आपके पास दो अलग-अलग स्वाद हो सकते हैं, एक बीआरई के लिए और एक ईआरई के लिए।नियमित अभिव्यक्ति?

आपको लगता है कि किसी प्रकार के परीक्षण सूट में कुछ हैगेरेक्स() परीक्षण। क्या किसी के पास कोई कोड हो सकता है? निश्चित रूप से कुछ व्यापक खोज रहे हैं।

मुझे लगता है कि इस पर चर्चा की गई here लेकिन कोई व्यावहारिक प्रतिक्रिया नहीं देखी गई। अगर मैं किसी भी फाइल के लिए grep करना चाहता हूं जिसमें एक नियमित अभिव्यक्ति है, शायद सामान्य // द्वारा बाध्य, मैं इसे कैसे करूँगा?

+0

संभावित डुप्लिकेट [क्या एक नियमित नियमित अभिव्यक्ति का पता लगाने के लिए नियमित अभिव्यक्ति है?] (Http://stackoverflow.com/questions/172303/is-there-a-regular-expression-to-detect-a-valid -regular-expression) –

उत्तर

18

नियमित अभिव्यक्ति स्वयं regular language नहीं हैं। सुराग यह है कि उनमें कोष्ठक और स्क्वायर ब्रैकेट होते हैं और ऐसे में संतुलित होना चाहिए।

एक नियमित अभिव्यक्ति स्वयं को context-free grammar द्वारा वर्णित किया जा सकता है, और recursive-descent parser के साथ पार्स किया जा सकता है।

+0

+1 शुद्धता के लिए +1। –

3

परे

egrep '/.+/' file 

आप एक बहुत शामिल व्यायाम देख रहे हैं।

1

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

  • एक से अधिक [0-9] के अस्तित्व, [AZ], + आदि
  • की/foo अस्तित्व/
  • नहीं एक मानक कोड फ़ाइल
  • कम संपीड़न योग्य (कुशल, मैं जानता हूँ कि, लेकिन regex व्याकरण की सघनता सहज सामान्य शब्दों से सेक करने के लिए कठिन हो जाएगा)
  • आदि

लेकिन अगर यह सिर्फ एक शॉट है, तो आप शायद बंद सबसे अच्छा कर रहे हैं Chaos's answer का उपयोग करके और परिणामों को मैन्युअल रूप से नीचे लाएं। क्या रेगेक्स (एसएस) में विशेष रूप से कुछ भी है जो आप ढूंढ रहे हैं, इसे चुनना आसान हो सकता है?