द्वारा सीमित एक ही पंक्ति में एक पैटर्न से कई बार मिलान करें, मैं इस के समान, लेकिन समान प्रश्न नहीं ढूंढ पा रहा हूं। अज्ञात वर्णों द्वारा सीमित एक ही पंक्ति में मैं एक रेगेक्स पैटर्न को कई बार कैसे मेल करूं?पर्ल, अज्ञात वर्णों
उदाहरण के लिए, कहें कि मैं पैटर्न HEY से मेल खाना चाहता हूं। मैं निम्न में से सभी को पहचान करना चाहते हैं:
अरे
हे हे
HEYxjfkdsjfkajHEY
इसलिए मैं 5 Heys वहाँ गिनती होगी। तो यहाँ मेरी कार्यक्रम है, जो सब कुछ है, लेकिन पिछले एक के लिए काम करता है:
open (FH, $ARGV[0]);
while(<FH>)
{
foreach $w (split)
{
if ($w =~ m/HEY/g)
{
$count++;
}
}
}
तो मेरे सवाल का मैं कैसे में दिखाया गया है की तरह इतना है कि मैं अज्ञात विन्यास में अजीब वर्ण (द्वारा सीमांकित पैटर्न को पहचान सकते हैं कि foreach पाश की जगह है ऊपर उदाहरण)?
संपादित करें:
अब तक महान प्रतिक्रिया के लिए धन्यवाद। मुझे अभी एहसास हुआ कि मुझे एक और चीज चाहिए, जिसे मैंने नीचे एक टिप्पणी में रखा था।
एक सवाल हालांकि: क्या मिलान किए गए कार्य को भी सहेजने का कोई तरीका है? मेरे मामले में की तरह तो, वहाँ $ w संदर्भित करने के लिए किसी भी तरह से है (जैसे कि अगर regex और अधिक जटिल था, और मैं घटनाओं की संख्या के साथ एक हैश में संग्रहीत करना चाहता था) अगर मैं एक मेल खा रहा था
तो असली रेगेक्स (अल्फान्यूमेरिक वर्णों का अनुक्रम कहें) और इसे हैश में सहेजना चाहता था।
हे, मदद के लिए धन्यवाद। मुझे वास्तव में आपके सामान को दो तरीकों से काम करने के लिए संशोधित करना पड़ा: सबसे पहले, मैं अपने जीवन के लिए पहले भाग के लिए अपना समाधान प्राप्त नहीं कर सका, इसलिए मैंने उस के लिए वेस के दृष्टिकोण का उपयोग किया (दो जबकि लूप)। इसके अलावा, मैं सिर्फ यह ध्यान रखना चाहता था कि समूहों के समूह के साथ regexes() पूरे regex के आसपास की आवश्यकता है, ताकि आप आवश्यक कुल के टुकड़ों के साथ एक हैश नहीं मिलता है। हालांकि धन्यवाद! – varatis
एकाधिक समूह से निपटने पर आपका मित्र गैर-कैप्चरिंग समूह है जिसे प्रश्न चिह्न-कॉलन '(? :)' के साथ संशोधित किया गया है। – masaers