मान लीजिए कि हमारे पास नियमित रूप से परिवर्तनीय पैटर्न है, जिसे सेगमेंट में विभाजित नहीं किया जा सकता है। जैसे यह infixation (शब्द के अंदर कुछ अक्षर जोड़ना) या स्वर परिवर्तन ('ablaut') हो सकता है। जर्मन से एक उदाहरण पर विचार करें।क्या मैं पर्ल 6 में एक शाब्दिक रेगेक्स संशोधित कर सकता हूं?
my @words = <Vater Garten Nagel>;
my $search = "/@words.join('|')/".EVAL;
"mein Vater" ~~ $search;
say $/; # 「Vater」
तीनों जर्मन शब्द उनके 2 पत्र 'एक' को 'ए' को बदलकर बहुवचन के रूप में। तो 'वाटर' → 'वाटर', 'गार्टन' → 'गार्टेन', 'नागेल' → 'नागेल'।
क्या मेरे $search
रेगेक्स को संशोधित करने का कोई तरीका है ताकि यह बहुवचन रूपों से मेल खा सके? यहाँ मैं के लिए क्या देख रहा हूँ है:
my $search_ä = $search.mymethod;
"ihre Väter" ~~ $search_ä;
say $/; # 「Väter」
बेशक, मैं एक नया regex
में @words
सरणी और 'precompile' इसे संशोधित कर सकते हैं। लेकिन मौजूदा regex
को संशोधित करने के लिए यह बेहतर होगा (यदि संभव हो)।
आप केवल इसे करने के लिए प्राप्त करने के बाद का अनुकूलन करना चाहिए एक कामकाजी राज्य और अपना कोड निर्धारित करने के बाद पर्याप्त तेज़ नहीं है। –
@ ब्रैडगिलबर्ट, डिफ़ॉल्ट रूप से इस अनुकूलन का उपयोग करने के संभावित दोष क्या हैं (सामान्यतः, मैं सैकड़ों खोज कुंजी और विशाल टेक्स्ट कॉरपोरेशन के साथ काम करता हूं, इसलिए इस अनुकूलन के बिना यह वास्तव में धीमा है)? कोड कम लचीला और कम सुरुचिपूर्ण होने के अलावा। स्पष्टीकरण के लिए –