zoukankan      html  css  js  c++  java
  • 正则表达式的捕获功能

    1.捕获变量: $1,$2,$3…

    $_ = 'http://www.perl.org/index.html' ;
    if (m#^http://([^/]+)(.*)#) {
      print "$1\n" ; # www.perl.org
      print "$2\n" ; # /index.html
    }

    注意:

    1.只有匹配成功时,捕获的变量才会被赋值。 若是没有匹配,那么对应位置上的捕获变量不会改变其值。

    2.即使圆括号内的表达式能在字符串内匹配多次,它也只会捕获最后一次匹配的内容。

    3.要找出捕获变量数字和圆括号的对应关系,不管括号潜逃多复杂,也只需从左到右依次数左括号即可。

    4.特殊变量$+保存了最后一个非空捕获变量的内容。

    2.捕获的反向引用

    正则表达式本身可以反向引用匹配或调用之前捕获的内容。 以原子\1,\2,\3来表示,并依次匹配相应的缓存。

    3.捕获并替换

    捕获及匹配变量常常用于替换操作。在替换字串中出现的$1,$2,$&等变量。

    要是替换的目的是去除匹配的内容,而非保留改写,那就不要使用捕获。

    4.列表上下文的捕获

    5.用正则表达式切词

    #使用m//g的方法
    while (
        /
         (\d+)             |    #数字
        ([+\-\/*()])      |    #运算符
        (\D)                    #数字以外的字符
        /xg
    )
    {
        if ($1 ne "") {
           push @tok,'num',$1 ;
       }elsif ($2 ne "") {
           push @tok,'punct' ,$2 ;
       }
      else {
          die "invalid char $3 in input";
      }
    
    
    
    
    }
  • 相关阅读:
    一次摸鱼
    scenes
    mysql日志
    十万个为什么
    ss
    mysql之explain
    mysql之索引
    mysql1
    分页
    ajax分页
  • 原文地址:https://www.cnblogs.com/tjxwg/p/2981831.html
Copyright © 2011-2022 走看看