Perl正则表达式

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

/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中替换功能( 未完待续



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值