मैं इस उदाहरण की स्थापना कर रहा हूँ पर्ल टुकड़ा एक तारीख में महीने के लिए मान्य करने के लिए:महीने इनपुट को सत्यापित करने के लिए मैं नियमित अभिव्यक्ति का उपयोग कैसे कर सकता हूं?
कुछ परिदृश्य मैं स्वीकार करना चाहते हैं:
एम.एम. एम
#!/usr/bin/perl
use strict;
use warnings;
my $pattern;
my $month = "(0[1-9]|1[012])";
my $day = "(0[1-9]|[12]\d|3[01])";
system("cls");
do {
print "Enter in a month: ";
chomp($pattern = <STDIN>);
# We only want to print if the pattern matches
print "Pattern matches\n" if ($pattern =~ /$month/);
} while ($pattern ne "Q");
जब मैं इस चलाने के लिए, यह सही ढंग से 01-12 से फिल्टर लेकिन जब मैं करने के लिए regex बदलने के लिए:
$month = "(0?[1-9]|1[012])";
तो regex की अनुमति देता है 13, 14, आदि ... क्या giv es?
(0 [1-0] | 1 [012]?), अमान्य [] रेंज "1-0" regex में। लेखन त्रुटि है? –
मैं ग्रेग हेगिल के उत्तर से सहमत हूं लेकिन जो कारण आप प्राप्त नहीं कर रहे हैं वह कारण है क्योंकि आपकी रेगेक्स मेटाएक्टैक्टर्स को गायब कर रही है ताकि आपकी स्ट्रिंग (यानी^और $) की शुरुआत और अंत से मेल खाने के लिए रेगेक्स को बताने के लिए कहा जा सके। जैसा कि यह खड़ा है कि यह आपकी स्ट्रिंग के किसी भी भाग से मेल खाता है। – seth