मैं जांचना चाहता हूं कि $test1 $test2 और $test3 में मौजूद है या नहीं।

मैंने निम्नलिखित कोड के साथ प्रयास किया लेकिन मुझे सही आउटपुट नहीं मिल रहा है।

my $test1 = "cat";
my $test2 = "My name is cat";
my $test3 = "My name is apple";

if($test2  eq /$test1/){
    print "yes2\n";
}

if($test3 eq /$test1/){
   print "yes3\n";
}
1
Jayesh Ranjan Majhi 19 सितंबर 2017, 15:02

3 जवाब

रेगेक्स से मिलान करने के लिए =~ ऑपरेटर का उपयोग करें:

if($test2  =~ /$test1/){
    print "yes2\n";
}

if($test3 =~ /$test1/){
   print "yes3\n";
}

आप सटीक मिलान के लिए शब्द सीमाओं का उपयोग कर सकते हैं, caterpillar से मेल खाने से बचने के लिए:

if($test2  =~ /\b$test1\b/){
    print "yes2\n";
}

if($test3 =~ /\b$test1\b/){
   print "yes3\n";
}
2
Toto 19 सितंबर 2017, 15:04
1
धन्यवाद यह काम कर रहा है। क्या आप \b के उपयोग के बारे में विस्तार से बता सकते हैं।
 – 
Jayesh Ranjan Majhi
19 सितंबर 2017, 15:11
@JayeshRanjanMajhi: एक शब्द सीमा \b एक शून्य-लंबाई का दावा है जो एक शब्द वर्ण और एक गैर-शब्द वर्ण के बीच की सीमा से मेल खाता है। देखें: regular-expressions.info/wordboundaries.html
 – 
Toto
19 सितंबर 2017, 15:14
एक संदेह: मैं इस चीज़ की नकल कैसे कर सकता हूँ अगर($test2 =~ /^jayesh/) चर का उपयोग करते समय
 – 
Jayesh Ranjan Majhi
19 सितंबर 2017, 15:19
@जयेश रंजन माझी: क्षमा करें, मैं आपको समझ नहीं पाया। mimic this thing से आपका क्या तात्पर्य है?
 – 
Toto
19 सितंबर 2017, 15:21
मैं जानना चाहता हूं कि मैं आउटपुट प्राप्त करने के लिए रेगुलर एक्सप्रेशन को कैसे संशोधित कर सकता हूं क्योंकि हां 2 केवल my $test1 = "cat"; my $test2 = "मेरा नाम बिल्ली है"; my $test3 = "मेरा नाम कैट.बॉल है"; अगर($test2 =~ /$test1/){ प्रिंट "yes2\n"; } अगर($test3 =~ /$test1/){ प्रिंट "हां3\n"; }
 – 
Jayesh Ranjan Majhi
19 सितंबर 2017, 15:28

यहाँ एक और तरीका है, जो सीधे if का उपयोग नहीं कर रहा है।

$result = ($test2  =~ /\b$test1\b/) ? "Matched" : "No Match";
print "$result\n";
1
Gerhard Barnard 26 जिंदा 2019, 09:06

किसी अन्य में निहित स्ट्रिंग को जांचने का सबसे आसान तरीका नियमित अभिव्यक्ति के माध्यम से होता है:

print "Found." if ( $test2 ~= /$test1/);

आपके मामले में, आप और भी संक्षिप्त होंगे:

foreach $str in ( $test1, $test2 ) {
   print "Found $test1 in $str." if ( $str ~= /$test1/);
}

या यहां तक ​​कि, डिफ़ॉल्ट असाइनमेंट का उपयोग करके:

foreach ( $test1, $test2 ) {
   print "Found $test1 in $str." if ( /$test1/ );
}

परीक्षण $_ के विरुद्ध जाँच कर रहा है, जो स्वचालित रूप से foreach खंड द्वारा निर्दिष्ट किया जाता है।

0
Gaétan RYCKEBOER 20 सितंबर 2017, 11:29