1 / 28
文档名称:

Perl+正则表达式讲解.pdf

格式:pdf   大小:2,314KB   页数:28页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Perl+正则表达式讲解.pdf

上传人:3144187108 2022/7/15 文件大小:2.26 MB

下载得到文件列表

Perl+正则表达式讲解.pdf

相关文档

文档介绍

文档介绍:: .
表达式能够处理双引号字符串所能处理的任意和全部的字符。
在 s///运算符(s/*//),或者 m//运算符 m/*/的第一个分隔区,位于其中的条目确实能
像双引号字符串一样对待(带有一些额外的附加功能,名义上的特殊正则表达式字符!后面描
述)。读者可用他们进行内插:
$variable = ' TEST' ;
$a =~ m/${variable}aha/;
和:
$a = " ${variable}aha" ;
二者都指向同一字符串:前者在$a 中匹配字符串 TESTaha.后者把$a 设置为字符串
TESTaha。因为正则表达式处理双引号字符串能处理的每个字符,所以可以 执行下列操作:
$expression = ' hello';
***@arrayName = (' elem1', ' elem2');
$variable =~ m/$expression/; # this equals m/hello/;
在这里,我们简单地把$expression 扩展为 hello 而得到 m/hello/。这个技巧也可用于
数组:
$variable =~ mm/***@arrayName/;/***@arrayName/; # this equals m/elem1 elem2/;
在这里,表达式等价于 m/elem1 elem2/。如果特殊变量$"被设置为 |.则表达式将等价
于 m/elem | elem2/,正如我们看到的,它匹配字符串的 elem 或者 elem2。这种方法也可
应用于特殊字符:
$variable =~ m/\x01\1\27/; # match binary character x01, and
# octal character 27.
$va$variableriable =~ s/\t\t\t//; # substitute three tabs for three ,这里所讨论的除极少数例外以外,Perl 处理在 m//中的过程的确像处理在双引
号中的一样。但是有例外:有某些对正则表达式引擎有明确意义的字符。那么,如果想匹配
类似于正斜杠(/)或者园括引(())这样的字符会发生什么呢?这些字符对正则表达式引取有
特殊意义:因而不能使用如下语句:
$variable=~ m//usr/local/bin/; # matches /usr/local/bin? NO! SYNTAX ERROR
因为 Perl 将把/解释为正则表达式的结束标记。这里有三种方法去匹配类似于上述特殊
字符的方法。第一种方法是利用反料杠来“转义”想匹配的任意特殊字符一包括反斜杠。因
而刚才给出的例子可变为:
$path =~ m/\/usr\/local\/bin/;
该程序尽力匹配 $path 中的/usr/local/bin。第二种方法是使用一个不同的正则表达式
字符。如果有许多字符要匹配,那么使用反斜杠则会变得很难看(路径字符尤其不好)。
幸运的是,Perl 以一种合成形式来确决这个问题。因为在当读者输入 m//或 s///时需要
给每个/加反斜杠,所以正则表达式允许读者将正则表达式的定界符(/)改为自己喜欢的任意
字符。例如,我们可以使用 双引号(")来避免大量的反斜杠:
$variable =~ m"/usr/local/bin"; # Note the quotation marks.
$variable =~ m"\"help\""; # If you are going to match quotatquotationion