Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > 其他编程语言 > Perl语言入门(第四版)--备忘录10
【标  题】:Perl语言入门(第四版)--备忘录10
【关键字】:Perl,--
【来  源】:http://www.cublog.cn/u/20228/showart.php?id=239879

Perl语言入门(第四版)--备忘录10

Your Ad Here
2007-01-29记录
 
 

正则表达式

在Perl中通常成为模式,某个模板是否匹配某个字符串
模式匹配//通常返回true或false,经常用在if和while条件表达式部分
 
 
 
元字符
 
点(.)是通配符,可以匹配任何单个字符,但不包括换行符\n,
反斜线\是第二个元字符
 
 
量词

星号(*)表示匹配前一项0次或多次
.*表示匹配任意字符任意次
加号(+)表示匹配前一项的1次或多次
问号(?)表示匹配前一项的1次或0次
 

这三个数量词必须跟在某些项的后面,因为它们是前面项的重复次数
 
 

模式中的分组

/(abc)+/表示1次多次出现abc
 
 

选择符|,表示匹配左边的或者右边的
单词and和or在正则表达式中不是操作符
 

任意单个字符[]
[abc],[a-zA-Z],[0-9]
取反
[^abc]
 
 
字符类的简写
 
\d      [0-9]
\w      [a-zA-Z0-9_]
\w+     可匹配单词
\s      [\f\t\n\r]
 
这些可以和*,+组合起来用
 
 
简写的补集

[^\d]   \D
[^\w]   \W
[^\s]   \S
 
 

模式匹配
 
m//,简写成//
 
 
标记,后缀在正则表达式后面来改变其默认行为
 

不区分大小写/i
匹配任何字符,包括换行符/s
在模式中加入任何数量的空格,但会忽略空格/x
 

匹配#号,可使用\#或[#]
 
 

锚定
 
/^boy/只匹配以boy开头的字符串
/boy$/只匹配以boy结尾的字符串
匹配一个空行/^\s*$/
词锚定\b
/\bhello\b/只匹配hello,不匹配helloword
非词界锚定\B
 
 
 
绑定操作符=~
 

my $what=shift @ARGV
#将输入命令的第一个参数赋值给$what
while(<>){
if (^$what)
{
print "we saw $what in the beginning of $_\n";}}
 
 
匹配变量
 
将模式中的一部分用()括起来,$1表示第一对括号匹配的字符串,$2表示第二对()匹配的字符串
 
 
$_="hello,erery one";
if(/(\S+),(\S+) (\S+)/){
print "words are $1 $2 $3\n";}
 
这样可以提取出我们想要的字符串
匹配上的变量值不会变,直到模式成功匹配到下一个为止
 

由于内存中的值不会一直保留,模式匹配后尽快使用$1这样的变量
if($what =~ /(\w+)/){
$value = $1;
}
 

$&整个匹配的部分

if ("hello there,neighbour"=~/\s(\w+),/){
print "these matche are '$&'.\n";
}
匹配部分是" there,",$1的值为there,$&的值为 there,

匹配部分的前一部分放在$`,后一部分放在$'
 
 

/a{2,6}/匹配2个到6个a
/a{2,}/2个a以上,没有上限
/a{2}/2个a
 
 

优先级

最优先()
第二级是数量词*,+,?,{}
第三级是锚定和序列
第四级是竖线|,表示或
 
学习设计模式:【上一篇】
一段对perl 木马的分析:【下一篇】
【相关文章】
  • Perl语言入门(第四版)--备忘录9
  • 精确监控网络流量的新生力量---NTOP
  • 重建密码文件--解决ORA-01991错误
  • Log4j学习笔记1--Level,初始化与Category
  • C++总结(二)---gcc知识(一)
  • 跟我一起学Windows Workflow Foundation(4)-----使用Listen,Delay,和其他envnt-based定制活动
  • 索引----天时、地利、人和
  • cream --- 为vim提供一个易用的外衣
  • 投资理财专题-->其他投资 篇1
  • asp多级菜单----数据库控制
  • 【随机文章】
  • Java中利用JMF编写摄像头拍照程序
  • Observer模式 学习笔记1
  • 你的ADSL会弹出广告窗口吗?
  • ASA与Web Service
  • 最新FAQ]MySQL版FAQ[包治'MySQL'百病
  • 对论坛中有关数据类型转换的整理
  • ring0 / ring3 跨级别进程通信.
  • 测试CCPXadd[利用CCProxy漏洞实现免费上网]
  • 使用Linux建立IP隧道
  • ORM如何用才不是滥用
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.