मैं कैसे जांच सकता हूं कि क्या दिए गए स्ट्रिंग में पर्ल के उपयोग से एक निश्चित सबस्ट्रिंग है?
विशेष रूप से, मैं देखना चाहता हूं कि s1.domain.comदिए गए स्ट्रिंग चर में मौजूद है या नहीं ।
मैं कैसे जांच सकता हूं कि क्या दिए गए स्ट्रिंग में पर्ल के उपयोग से एक निश्चित सबस्ट्रिंग है?
विशेष रूप से, मैं देखना चाहता हूं कि s1.domain.comदिए गए स्ट्रिंग चर में मौजूद है या नहीं ।
जवाबों:
यह पता लगाने के लिए कि क्या स्ट्रिंग में स्ट्रिंग है आप indexफ़ंक्शन का उपयोग कर सकते हैं :
if (index($str, $substr) != -1) {
print "$str contains $substr\n";
}
यह की पहली आवृत्ति की स्थिति वापस आ जाएगी $substrमें $str, या -1 अगर सबस्ट्रिंग नहीं मिला है।
एक और संभावना यह है कि नियमित अभिव्यक्ति का उपयोग करें जो कि पर्ल के लिए प्रसिद्ध है:
if ($mystring =~ /s1\.domain\.com/) {
print qq("$mystring" contains "s1.domain.com"\n);
}
बैकस्लैश की आवश्यकता है क्योंकि .किसी भी चरित्र से मेल खा सकता है। आप ऑपरेटरों \Qऔर \Eऑपरेटरों का उपयोग करके इसे प्राप्त कर सकते हैं ।
my $substring = "s1.domain.com";
if ($mystring =~ /\Q$substring\E/) {
print qq("$mystring" contains "$substring"\n);
}
या, आप यूजीन वाई के रूप में कह सकते हैं और सूचकांक फ़ंक्शन का उपयोग कर सकते हैं । बस चेतावनी का एक शब्द है: अनुक्रमणिका एक रिटर्न -1जब यह एक के बजाय एक मैच नहीं मिल सकता है undefया 0।
इस प्रकार, यह एक त्रुटि है:
my $substring = "s1.domain.com";
if (not index($mystring, $substr)) {
print qq("$mystring" doesn't contains "$substring"\n";
}
यह गलत होगा यदि s1.domain.comआपकी स्ट्रिंग की शुरुआत में है। मैं व्यक्तिगत रूप से एक से अधिक बार इस पर जल चुका हूं।
index()है कि सरल मामले में regexps से तेज है?
=~, index(), ~~और match::simpleसब एक सा लग रहा था awk\ -: -ward ...
domain.comमैच नहीं कर सकता subdomain.domain.com, किसी भी विचार?
केस असंवेदनशील पदार्थ उदाहरण
यह यूजीन के उत्तर का विस्तार है, जो स्ट्रिंग को निचोड़ने से पहले निचली स्थिति में परिवर्तित करता है:
if (index(lc($str), lc($substr)) != -1) {
print "$str contains $substr\n";
}
:) के लिए विशेष हैं ।