xmxm76 发表于 2017-5-17 11:38:59

perl-可选修饰符

perl-可选修饰符

可选修饰符
这些修饰符可有可无,有时候称为开关,放在正则表达式结尾的界定符右边,并改变正则表达式的默认行为。
/i进行大小无关的匹配
/s匹配任意字符
/x加入空白
实例:
1)/i修饰符可以让你在进行模式匹配时不区分大小写。

#!/perl
use strict;
print "Would you like to play a game?";
chomp($_ = <STDIN>);
if (/YES/i){
print "You input the string : $_";
}
#end


2)用/s来匹配任意字符,默认情况下(.)号无法匹配换行符,这对大多数单行匹配的情况是符合的,但是如果字符串中有换行符时,用/s就可以完成匹配。

#!/perl
use strict;
my ($var);
$var = "I saw Barney\ndown at the bowling alley\nwith fred\nlast night.\n";
#if ($var_sub =~ /Barney.*fred/s){
if ($var =~ /Barney.*fred/s){
print "That matching mentions fred Barney.";
}
#end


3) 用/x加入空白
在模式里随意加入空白,使它阅读更容易:
/-? \d+\.?\d*/
/ -?\ d+ \ .? \ d* /
加入空白后更易于阅读。
附加:
.   Match any character
\wMatch "word" character (alphanumeric plus "_")
\WMatch non-word character
\sMatch whitespace character
\SMatch non-whitespace character
\dMatch digit character
\DMatch non-digit character
\tMatch tab
\nMatch newline
\rMatch return
\fMatch formfeed
\aMatch alarm (bell, beep, etc)
\eMatch escape
\021Match octal char ( in this case 21 octal)
\xf0Match hex char ( in this case f0 hexidecimal)

You can follow any character, wildcard, or series of characters and/or wildcard with a repetiton. Here's where you start getting some power:
*      Match 0 or more times
+      Match 1 or more times
?      Match 1 or 0 times
{n}    Match exactly n times
{n,}   Match at least n times
{n,m}Match at least n but not more than m times
页: [1]
查看完整版本: perl-可选修饰符