में रीगेक्स का उपयोग कर स्ट्रिंग के भीतर एकाधिक मैचों को प्राप्त करना this similar question पढ़ने के बाद और कई बार मेरे कोड को आजमाने के बाद, मुझे वही अवांछित आउटपुट मिल रहा है।पर्ल
मान लें कि जिस स्ट्रिंग को मैं खोज रहा हूं वह है "मैंने कल विल्मा देखा"। रेगेक्स को प्रत्येक शब्द पर कब्जा करना चाहिए, उसके बाद 'ए' और उसके वैकल्पिक 5 वर्ण या रिक्त स्थान के बाद।
$_ = "I saw wilma yesterday";
if (@m = /(\w+)a(.{5,})?/g){
print "found " . @m . " matches\n";
foreach(@m){
print "\t\"$_\"\n";
}
}
हालांकि, मैं निम्नलिखित उत्पादन हो रही है पर रखा:
कोड मैंने लिखा निम्नलिखित है
found 2 matches
"s"
"w wilma yesterday"
जब मैं मिलने की उम्मीद के बाद एक:
found 3 matches:
"saw wil"
"wilma yest"
"yesterday"
जब तक मुझे पता चला कि @m
के अंदर वापसी मूल्यथेऔर $2
, जैसा कि आप देख सकते हैं।
अब, /g
ध्वज चालू है, और मुझे नहीं लगता कि समस्या रेगेक्स के बारे में है, मैं वांछित आउटपुट कैसे प्राप्त कर सकता हूं?
मुझे समझ में नहीं आता कि आपके अपेक्षित नतीजे में 'दिन' क्यों है और 'कल' नहीं? –
ठीक है, आप सही हैं। बस संपादित – none
ठीक है, मेरे पास आपके लिए एक पैटर्न है। –