zoukankan      html  css  js  c++  java
  • Perl中的正则表达式(五)

    正则表达式(Regular Expression),在Perl里边通常也叫做模式(Pattern),用来表示匹配(或不匹配)某个字符串的特征模板。

    使用简单模式:若模式匹配的对象是$_的内容,只要把模式写在一对斜线(/)中就可以了。

             $_ = "yabba dabba doo";      if(/ab ba/)   {print "......";}  ##所有在双引号内的特殊字符,都可以在//内使用。

    Unicode中的字符的属性,放在p{PROPERTY}。只要把小写的p改成大写,就表示否定意义。

             if(/p{Space}/)   {}             ##匹配空白符

             if(/p{Digit}/)   {}               ##匹配数字

             if(/p{Hex}p{Hex}/)    {}   ##匹配十六进制数字的字符集合[0-9A-Fa-f]

    元字符:点号(.)匹配任意一个字符的通配符。如果需要仅仅匹配元字符,可以加反斜线转义。

    简单的量词:星号(*)用来匹配前面条目零次或多次。(.*)匹配任意多字符无限次。

                     加号(+)匹配前一条目一次以上。问号(?)匹配前一条目一次或没有。

                     大括号{},表示具体的重复次数。   ##/a{5,15}/重复5次到15 次。

                                                                    ##/a{5,}/最少重复一次。

    模式分组:可以用圆括号()来对字符串分组。

                  /fred+/与/(fred)+/            ##匹配不同量

    捕获组:可以通过反向引用来引用圆括号中的模式所匹配的文字。

                  if(/y(.)(.)21/)   {print "";}        ##1,2分别对应顺序的捕获组,按左括号的顺序来标号。匹配进行时的引用

                  if(/(.)g{1}11/)   {print "";}        ##g{1}来显式的指明第一个括号,避免歧义。

                  if(/(.)(.)g{-1}11/)   {print "";}      ##g{-1}相对反向引用,指前一个捕获组中的数据,这样在增加捕获组时,

                                                                                   保证序号不需要改变

    择一匹配:竖线(|),要么匹配左边的内容,要么匹配右边的内容。需要加入括号来限制范围。

                  /fred( | )+barney/          ##匹配至少一个空格或制表符或两个。

    字符集:指出一组可能出现的字符,写在方括号[]内表示。只匹配单个字符。在一个字符集的首部加入脱字符(^),表示否定含义。

                  if(/HAL-[0-9]+/)             ##匹配数字0-9

                  [^n-z]                 ##除n,连字符,z之外的任何字符。连接字符(-)在[]中含有特殊含义,所以必须加反斜线转义

    字符集的简写:  /HAL-d+/     ##d表示任何一个数字字符集的简写,包括ASCII和Unicode。

                         if(/HAL-[d]+/a)      ##//a表示严格按照ASCII的范围来匹配数字字符。

                         if(/s/a)          ##s匹配任意的空白符,/s/a表示匹配ASCII的空白符。

                         if(/R/)           ##R匹配任意的断行符。

                         if(/w/)           ##w匹配[a-zA-Z0-9_],主要是匹配Perl所承认的标示符,所以会有下划线_。

    相应的反义简写:[^d], [^w], [^s]等价于D, W, S。

                         if([dD])        ##匹配任意的字符,包括换行符,比元字符(.)范围还要广。

  • 相关阅读:
    Scrapy settings 并发数更改
    tp5 规避 [ error ] 未定义数组索引
    967. Numbers With Same Consecutive Differences
    846. Hand of Straights
    1103. Distribute Candies to People
    559. Maximum Depth of N-ary Tree
    1038. Binary Search Tree to Greater Sum Tree
    538. Convert BST to Greater Tree
    541. Reverse String II
    1551. Minimum Operations to Make Array Equal
  • 原文地址:https://www.cnblogs.com/-9-8/p/4499790.html
Copyright © 2011-2022 走看看