के साथ दो ओवरलैपिंग पैटर्न मिलान करना मुझे आशा है कि मेरा प्रश्न किसी और द्वारा पहले से ही नहीं देखा गया है, क्योंकि मैंने साइट पर लगभग हर जगह देखने की कोशिश की लेकिन मैं जवाब खोजने में सक्षम नहीं था।पर्ल
मेरे समस्या है: मैं एक PERL स्क्रिप्ट जो हर घटना एक या एक स्ट्रिंग में एक और पैटर्न के की स्थिति का पता लगाने के लिए है बना रहा हूं।
उदाहरण के लिए:
$string = "betaalphabetabeta";
$pattern = "beta|alpha";
इस मामले में, मैं 4 मैचों वापस जाने के लिए मेरी स्क्रिप्ट चाहते हैं।
मैंने सोचा था कि यह आसानी से मैच ऑपरेटर किसी न किसी प्रकार इस तरह में उपयोग करके प्राप्त किया जा सकता है:,
$string =~ /beta|alpha/g;
हालांकि, मेरे दो पैटर्न के बाद से ("अल्फा" "बीटा",) कर रहे हैं आंशिक रूप से अतिव्यापी टुकड़ा कोड जो मैंने अभी पोस्ट किया है, पहले पैटर्न की किसी भी घटना को छोड़ देता है जब यह दूसरे के साथ ओवरलैप होता है।
उदा। ? अगर मैं इस तरह एक स्ट्रिंग है:
$string = "betalphabetabeta";
यह बजाय केवल 4.
मैं = ऑपरेटर के साथ कुछ करने के लिए कोशिश की है 3 मैचों देता है, लेकिन मैं इस जोड़ी पर प्रबंधन नहीं कर सकते यह ओआर ऑपरेटर के साथ सही तरीके से ...
क्या किसी के पास कोई समाधान है? आपकी सहायताके लिए धन्यवाद!
आप अपने कोड के अधिक मैचों की संख्या लौटने हिस्सा पोस्ट कर सकते हैं उदाहरण के लिए,? – Perleone
[कैसे-करें-i-substitute-overlapping-match-with-a-perl-regex] (http://stackoverflow.com/questions/6572189/how-do-i-substitute-overlapping-matches-with-a -पीएलएल-रेगेक्स) –
@mugenkenichi अच्छी तरह से .. समाधान बहुत जटिल है..तुम इसके बजाय 'लुकहेड' का उपयोग कर सकते हैं! – Anirudha