संशोधक /a में नियमित रूप से अभिव्यक्ति पर्ल

जब नियमित अभिव्यक्ति का उपयोग पर्ल में, आप का उपयोग कर सकते हैं संशोधक /a.

संशोधक जोड़ने /a में परिवर्तन के व्यवहार \d, \w और \s:

  • अगर संशोधक /a निर्दिष्ट नहीं है, ये सेट शामिल हैं कई पात्रों में से यूनिकोड.
  • की उपस्थिति में एक संशोधक /a, इन चरित्र सेट शामिल हैं में केवल अक्षर ASCII रेंज

व्यवहार में परिवर्तन \D, \W और \S.

\d

जब आप निर्दिष्ट संशोधक /a चरित्र सेट \d भी शामिल है केवल 10 अक्षर — संख्या 0 के लिए 9. अगर संशोधक /a निर्दिष्ट नहीं है, तो \d का मतलब है सभी वर्णों की एक बहुत कुछ कर रहे हैं कि अंक में यूनिकोड.

यहाँ है एक उदाहरण कोड:

▶ Run
#!/usr/bin/perl

use utf8;
use open qw(:std :utf8);
use strict;
use warnings;

my $str = '٢4௪၂၃';

if ($str =~ /(\d+)/) {
    print $1;
}

कार्यक्रम प्रदर्शित करेगा क्या कब्जा कर लिया गया था का उपयोग कर \d+ और इस पाठ ٢4௪၂၃. इस कोड में, संशोधक /a निर्दिष्ट नहीं है, और इसलिए \d सभी को दर्शाता है कि माना जाता है एक आंकड़ा यूनिकोड में है, और यह नहीं है सिर्फ 10 अंक 0 से 9 के लिए, लेकिन एक मेजबान के अन्य अक्षर है कि प्रयोग किया जाता में अलग अलग भाषाओं.

यदि इस कोड को जोड़ने संशोधक /a: if ($str =~ /(\d+)/a) {, कार्यक्रम प्रदर्शित करता है एक ही चरित्र, संख्या 4, के रूप में इस मामले में \d का मतलब सिर्फ 10 अक्षर.

उदाहरण के पात्रों है कि पर्ल समझता है यूनिकोड संख्या में पाया जा सकता है बाहर के द्वारा इस कोड का उपयोग कर:

▶ Run
#!/usr/bin/perl

use utf8;
use open qw(:std :utf8);
use strict;
use warnings;

foreach my $i (0..65535) {
    print chr($i) if chr($i) =~ /\d/;
}

\s

जब का उपयोग कर /a कई पात्रों \s के लिए पर्ल संस्करण 5.18 शामिल 5 अक्षर, लेकिन पर्ल 5.18 शामिल 6 अक्षर:

  • "\t", chr(9), "\N{CHARACTER TABULATION}"
  • "\n", chr(10), "\N{LINE FEED}"
  • "\x0B", chr(11), "\N{LINE TABULATION}" — पर्ल 5.18
  • "\f", chr(12), "\N{FORM FEED}"
  • "\r", chr(13), "\N{CARRIAGE RETURN}"
  • ' ', chr(32), "\N{SPACE}"

अगर संशोधक /a निर्दिष्ट नहीं है, तो \s भी शामिल है और अधिक अक्षर है (उन कर रहे हैं, जो सफेद रिक्ति वर्ण यूनिकोड में).

\w

जब का उपयोग कर /a कई पात्रों \w भी शामिल 63 प्रतीक है और एक ही काम करता है के रूप में [A-Za-z0-9_].

अगर /a इस्तेमाल नहीं कर रहा है, यह \w की तुलना में अधिक शामिल 50 हजार अलग यूनिकोड अक्षर.

पर्ल संस्करण

संशोधक /a में पहली बार दिखाई दिया पर्ल 5.14. यदि आप का उपयोग करने की कोशिश यह पूर्व करने के लिए 5.14, वहाँ एक त्रुटि हो जाएगा और कोड का निष्पादन बंद कर दिया जाएगा । उदाहरण के लिए, कोड 'abc' =~ /\w/a; पर पर्ल 5.10 का उत्पादन होगा एक त्रुटि:

Bareword found where operator expected at script.pl line 3, near "/\w/a"
    (Missing operator before a?)
syntax error at script.pl line 3, near "/\w/a"
Execution of script.pl aborted due to compilation errors.

अन्य लेख