perl学习(二)正则表达式

模式分组:

/fred+/会匹配freddd这样的

/(fred)+/会匹配fredfredfred这样的

/(fred)*/则会匹配abcdef任意的

圆括号同时也使得重新使用某些字符串成为可能。反向引用来引用圆括号中的模式所匹配的文字,这个行为我们称为捕获组。

反向行为的写法是在反斜线后面接上数字编号,比如\1, \2这样,对应的数字表示对应顺序的捕获组。

$_ = "abba";
if (/(.)\1/) { # 匹配 ‘bb‘
        print "It matched same character next to itself!\n";
}

$_ = "yabba dabba doo";
if (/y(....) d\1/) { # 匹配 ‘yabba dabba‘
    print "It matched same after y and d!\n";
}

$_ = "yabba dabba doo";
if (/y(....) c\1/) { # 不匹配
    print "It matched same after y and d!\n";
}

$_ = "yabba dabba doo";
if (/y((.)(.)\3\2) d\1/) { # 匹配  ‘yabba dabba‘
    print "It matched!\n";
}

反向引用用\g{N}更明晰

$_ = "aa11bb";
if (/(.)\g{1}11/) { # 匹配 ‘aa11‘
    print "It matched:aa11!\n";
}

时间: 2024-08-03 18:12:11

perl学习(二)正则表达式的相关文章

PERL学习笔记---正则表达式的应用

使用m//匹配 //这是m//(模式匹配)的一种简写.同qw//操作一样,可以使用任何成对的分隔符.因此,可以使用m(fred), m<fred>, m{fred}, m[fred],或者m,fred,, m!fred!, m^fred^,其它非成对的分隔符也可以 不区分大小写:/i if(/yes/i) {#大小写无关 print “In that case, I recommend that you go bowling.\n”;} 匹配任何字符:/s 默认情况下,点(.)不匹配换行符,这

perl学习之正则表达式

9    Perl 中的正则表达式 正则表达式的三种形式 正则表达式中的常用模式 正则表达式的 8 大原则 正则表达式是 Perl 语言的一大特色,也是 Perl 程序中的一点难点,不过如果大家能够很好的掌握他,就可以轻易地用正则表达式来完成字符串处理的任务,当然在 CGI 程序设计中就更能得心应手了.下面我们列出一些正则表达式书写时的一些基本语法规则. -----------------------------------------------------------------------

PERL学习笔记---正则表达式

要匹配某个模式(正则表达式)和$_的关系,可以将模式放在正斜线(//)之间,如下:$_ ="yabba dabba doo";if(/abba/){print "It matched!\n";} 表达式/abba/将在$_寻找这四个字母.如果找到,则返回true,在本例中,它出现了不止一次,但结果没什么不同.总之,如果找到了,则匹配上:如果没找到,则没匹配上.由于模式匹配通常返回true 或false,因此经常用在if 或while 的条件表达式部分.所有在双引号中

perl学习二:简单变量

字符串变量:${}1.单引号:不进行变量替换,不进行转义,字符串可以跨行.2.双引号:变量替换(贪婪匹配原则).支持转义字符(转义字符可以另外看)3.反引号 字符串的特殊表示方法:qq(...) q(...)()可以换为<>,{},[],//,;;,等配对的字符. 变量初值:undef $adefined $a一般用于条件判断中整数初值为0字符串初值为空串 相关函数:length()----串长度.数字位数chop()chomp()$/的意义上面的函数用法丰富,可以去掉任意末尾的字符.

perl学习笔记之:正则表达式

 Perl 中的正则表达式 正则表达式的三种形式  正则表达式中的常用模式  正则表达式的 8 大原则          正则表达式是 Perl 语言的一大特色,也是 Perl 程序中的一点难点,不过如果大家能够很好的掌握他,就可以轻易地用正则表达式来完成字符串处理的任务,当然在 CGI 程序设计中就更能得心应手了.下面我们列出一些正则表达式书写时的一些基本语法规则. ----------------------------------------------------------------

Perl 学习笔记-正则表达式

1.Perl中的正则表达式 在Perl中叫做模式, 是一个匹配(或不匹配)某字符串的模板, 是一种小程序, 对于一个字符串, 要么匹配, 要么不匹配. 使用简易模式: 将模式写在一对正斜线(/)中即可. 2.元字符  .  匹配非换行符 \n 的任何单字符, 需要注意的是转义字符如  \t  算做一个字符. 匹配  .  应该使用  \.  *  匹配前面的内容0次或多次, 使用  .* 表示匹配任意单字符任意次(这种模式也称为捡破烂模式)  +  匹配前面的内容至少1次  ?  匹配前面的内容

正则表达式学习(二)

继续上篇的内容,学习令人头痛的正则表达式 6.分支条件 上一章最后一个表达式是:(?0\d{2}[) -]?\d{8}, 它也能匹配到010)12345678或(022-87654321这样的字符. 这里需要"分支条件"来解决; 正则表达式里的分枝条件指的是有几种规则,如果满足其中任意一种规则都应该当成匹配,具体方法是用** | **把不同的规则分隔开. 例子1: 0\d{2}-\d{8}|0\d{3}-\d{7}这个表达式能匹配两种以连字号分隔的电话号码:一种是三位区号,8位本地号(

与Perl兼容的正则表达式函数

正则表达式不能独立使用,它只是一种用来定义字符串的规则模式,必须在相应的正则表达式函数中应用,才能实现对字符串的匹配.查找.替换及分割等操作.前面也介绍过在PHP中有两套正则表达式函数库,而使用与Perl兼容的正则表达式函数库的执行效率要略占优势,所以在本书中主要介绍以“preg_”开头的正则表达式函数.另外,在处理大量信息时,正则表达式函数会使速度大幅减慢,应当只在需要使用正则表达式解析比较复杂的字符串时才使用这些函数.如果要解析简单的表达式,还可以采用很多可以显著加快处理过程的预定义函数.下

Linux学习之正则表达式&grep&egrep

我们经常需要在文档中搜索符合自己要求的内容,这些部分可能分散在文档的各个位置,各个角落.可以利用关键字例如/keyword或者?keyword一个一个的搜索,还有我可能不止想搜索关键字,而是指定一个范围,怎样操作?而且怎样把这些搜索到的内容集中地显示出来?使用正则表达式搜索字串的grep命令和egrep命令就可以满足我们的这个要求. 正则表达式(Regular Expression)是一种字符书写的模式,以行为单位进行字符的处理,透过一些特殊字符的辅助,利用这种模式可以轻易地达到对字符的搜索.删

MongoDB入门学习(二):MongoDB的基本概念和数据类型

上一篇讲了MongoDB的安装和管理,其中涉及到了一些概念,数据结构还有一些API的调用,不知道的没关系,其实很简单,这篇会简单介绍一下. 1.文档 文档是MongoDB的核心概念,多个键值对有序的放在一起就是一个文档,文档是MongoDB存储数据最基本的数据结构.对MongoDB都是以文档的形式来操作的,使用了一种类似JSON的二进制BSON数据格式,对API的调用都是传的文档参数.每种编程语言都有标示文档的数据结构,比如java的map,lua的table,python的dict等等,但是都