Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1957622
  • 博文数量: 176
  • 博客积分: 1857
  • 博客等级: 上尉
  • 技术积分: 2729
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-14 22:55
个人简介

吾生有涯,而知无涯,适当止学.循序渐进,步步提升 Talk is cheap, show me the code.

文章分类

全部博文(176)

文章存档

2019年(1)

2018年(14)

2017年(20)

2016年(31)

2015年(15)

2014年(5)

2013年(10)

2012年(80)

分类: Python/Ruby

2012-07-02 14:51:48

(.)是元字符,匹配任何的单字符。

/bet.y/ 这个模式匹配 bet,中间接任何一个字符(除换行符外),后面接Y字符。

/3\.14159/ (\.)这消除元字符含义,只匹配句点号本身。

量词:

* 匹配前面的内容零次或多次

  /freb.*barney/ .*为捡破烂模式,通吃所有的字符串.

+ 匹配前一个条目一次以上

  /fred +barney/  中间有空格,匹配一次以上的空格。

? 匹配前一个条目一次或不匹配

模式分组
/(fred)+/ 会匹配fredfredfred,其中()是元字符

$_ ="abba";
if(/(.)\1/){ (这里的反向引用看不懂,mark一下,以后再钻)
    print "it matched \n";
}

择一匹配
/fred|barney/betty/  '|'具有或的功效

字符集(指一串可能出现的字符集合,通过写在方括号([])内表示.它只匹配单个字符,但可以使字符集里列出的任何一个)

[abcwxyz]匹配这七个字符中的任何一个,可以使用连字符(-),就可以写成[a-cw-z]
[^def]匹配d,e,f之外的字符
\d <=> [0-9]
\w <=> [A-Za-z0-9_]
\s <=> [\f\t\n\r ]=>等于是包含5种空白的字符集:换页,制表,换行,回车以及空格(一般使用:\s*,\s+

以m// 进行匹配 =>模式匹配定界符
例如:next if ( m|/.*mysqld, Version:.+ started with:| );(m||就是模式匹配定界符,里面匹配的都是正则表达式的写法)
.*(通吃所有字符,除换行符外)
.+(匹配一个以上)
\d+(一个以上的数字)
\s+(匹配一个以上的空白字符集)

/^fred/和、/rock$/,这里^和$都是锚位,一个代表以开头匹配,一个代表以结尾匹配

可修辞符:
/i 大小写无关   /s来匹配任意字符  /x加入空白

/-?\d+\.?\d*/x

拆分分析:
/
 -?   #匹配零个或一个减号
 \d+  #匹配一个或多个数字
 \.?  #匹配零个或一二小数点
 \d*  #匹配零个或多个数字
/x

note:/^\#/,匹配去除以#号开头的语句。

=~绑定操作符, =~能让Perl拿右边的模式来匹配左边的字符串,而非匹配$_。

捕获变量(真是个强大的功能

圆括号有启动正则表达式处理引擎的捕获功能。把(圆括号中模式所匹配的)部分字符串暂时记下来的能力,如果有一对圆括号,就会有一次以上的捕获。

例如:
    原文记录:
    # Query_time: 1.558936  Lock_time: 0.000077 Rows_sent: 0  Rows_examined: 262144

    if ( /Query_time:\s+(.*)\s+Lock_time:\s+(.*)\s+Rows_examined:\s+(.*)/ ) {

        $time    = $1;
        $rows     = $3;
        $new_sql = 1;
        # print "found $1 $3\n";
        next;

    }
   
    这里就可以捕获$1,$2,$3,它们分别的值是1.558936,0.000077,262144

S///是Perl中替换功能(未完待续



阅读(6532) | 评论(0) | 转发(0) |
0

上一篇:Perl源码安装

下一篇:Perl钻石操作符输入

给主人留下些什么吧!~~