飞针杀鬼子:Perl通配符

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 14:11:54
Perl通配符 2011-01-27 15:57

\t --制表符
\  --转义符

元字符
.     --单字符的通配符(换行“\n”除外)
*     --匹配前面的字符零次或多次
+     --匹配前面条目一次以上
?    --表示前面的条目是可有可无的
.*    --匹配任意字符无限多次
()  --模式分组
()\1 --反向引用,反斜线后面的数字和括号的组号匹配
|     --或,匹配左边或者匹配右边都行

字符集
[a-z] --连字符(字符集以外的连字符没有任何意义)
[^def]--会匹配这三个字符以外的任何字符
[^n\-z]--会匹配n、连字符 与z以外的任何字符

简写
[0-9]==\d
[A-Za-z0-9]==\w
[\f\t\n\r ]==\s
\s* -- 匹配任意数目的空白
\s+ -- 匹配一个以上的空白
\s

反义简写
[^\d]==\D
[^\w]==\W
[^\s]==\S
/[\dA-Fa-f]+/ --匹配十六进制数字

可选修饰符
m/yes/i  -- 进行大小写无关的匹配
/s       -- 匹配任意字符
/-? \d+ \.?/x  --中间可以加入任意空白
/g  --进行全部匹配

锚位
/^\s*$/ --脱字符,字符串的开头;$ 字符串的结尾
/\bFred\b/ 单词边界锚位

/(?:bronto)/--不捕获模式

s///g -- 进行全局替换
split /:/ --拆分字符串
join ":"   --合并字符串


常用字符:
Perl中的‘->’功能就和他们在C或C++中相同。
‘->’符号是“插入式解引用操作符”(infix dereference operator)。
调用  由引用传递参数  的子程式的方法。

下面是个简单的解引用的例子:
$x = { def => bar }; # $x是指向一个匿名hash的引用
print $x->{def},"\n"; # 输出''bar''

注意,在调用Perl/Tk的子程式时有多种不同的方法进行引用。
我们能比较一下:
my($top) = MainWindow->new;

my($top) = new MainWindow;
两种方法的不同。
不过,一般来说我们通常都使用这样的方法调用:
$top -> Widge-type;

在Perl/Tk的脚本中‘=>’操作符时非常常见的。
perlop手册页中说:关系操作符=>只是逗号操作符的替代物,他在显示成对的参数时非常有用。
你能认为=>只是为了程式的美观和易维护而被使用的。请看,在下面的例子中,要想监测是否每个选项都有对应的值,是多么的困难:
$query -> Button(-in,\$reply,-side,’left’,-padx,2m,-pady,
2m,-ipadx,2m,-ipady,1m)->pack(-side,’bottom’);
而下面的这个则相反:
$query ->Button( -in => \$reply,
-side => ’left’,
-padx => 2m,
-pady => 2m,
-ipadx => 2m,
-ipady => 1m
)->pack(-side => ’bottom’);

顺便说一下,如果你需要用数字“大于等于”的符号,你应该用“>=”而不是“=>”。
“::”符号能认为是和C语言中的“.”相似的,而他更像C++中的::类范围操作符。
a.b.c; /* C语言中的 */
a::b::c(); // C++ 中的函数
$a::b::c; # Perl 5中的标量
@a::b::c; # Perl 5中的列表
%a::b::c; # Perl 5中的关联数组(或叫hash)
&a::b::c; # Perl 5中的函数