को कवर करता है, तो मैं एक टेक्स्ट क्लस्टरिंग एल्गोरिदम लागू करने का प्रयास कर रहा हूं। एल्गोरिदम क्लस्टर को रेगेक्स के साथ बदलकर कच्चे पाठ की समान रेखाएं, और इनपुट पाठ से दोहराव वाले पैटर्न दिखाने के बजाय इनपुट टेक्स्ट का एक साफ सारांश प्रदान करने के लिए प्रत्येक रेगेक्स से मेल खाने वाले पैटर्न की संख्या को जोड़ती है। इस प्रयास में मैंने यह पता लगाने की आवश्यकता में भाग लिया कि क्या एक रेगेक्स दूसरे को कवर करता है।जांचें कि एक रेगेक्स किसी अन्य रेगेक्स
मान लें हम चिंतित केवल '*' और '+' वाइल्ड कार्ड अर्थात '*' एक वर्णमाला के शून्य या अधिक आवृत्तियां अर्थ, और '+' एक वर्णमाला के 1 या अधिक आवृत्तियां अर्थ के साथ नियमित अभिव्यक्ति के बारे में कर रहे हैं। चरित्र सेट को ASCII भी मानें।
उदाहरण के लिए:
1. AB covers AB
This is straightforward.
2. ABC* covers ABC
Because ABC* can generate: ABC, ABCC, ABCCC etc.
3. A*B+C* covers AB+C*
Because A*B+C* can generate ABBC, AABBC, AABBCC etc. which covers
all strings generated by AB+C*.
4. A+M+BC* covers AMM+B+C+M+BC*
Similar to case [3] above.
असल में मैं (एक regex हो सकती है) के बाद विधि है जो अगर Stra बताता है की एक कुशल कार्यान्वयन STRB के लिए शामिल किया गया है के लिए देख रहा हूँ (एक regex हो सकती है)। ध्यान दें कि इनपुट स्ट्रिंग्स stra और strb में regex वर्ण '*' और '+' से बचने का एक तरीका भी होना चाहिए। C++
विधि हस्ताक्षर:
bool isParentRegex(const string& strA, const string& strB)
मेरे सोच है कि एक पुनरावर्ती दृष्टिकोण कार्यान्वयन के लिए आवश्यक है और यह थोड़ा जटिल हो सकता है। लेकिन मुझे यह जानकर उत्सुकता है कि क्या मैं पहिया को फिर से आविष्कार करने के बजाय मौजूदा कार्यान्वयन का पुन: उपयोग कर सकता हूं या यदि ऐसा करने के लिए कोई अन्य सरल तरीका है।
बहुत अच्छा सवाल! –
संभावित डुप्लिकेट [रेगेक्स: निर्धारित करें कि दो नियमित अभिव्यक्ति एक ही आवेग के लिए मिल सकती हैं?] (Http://stackoverflow.com/questions/3410256/regex-determine-if-two-regular-expressions-could-match-for -एक-समान-लागू) –
अधिकांश चीजों की तरह, यह पर्ल में आसान होगा। :-) – ruakh