在Perl中,匹配的定界符如果是双斜线//,可以直接使用双斜线完成匹配操作。

如果特定条件下需要改变定界符,如改为{},[]等。需要加入m,m{},m[]等。

m%^http://%

默认的模式匹配对象是自动化变量$_,如果要指定匹配对象,可以使用绑定操作符=~。

my $some_other = "I have a Dream";

if($some_other =~ /\brub/);    ##用右侧的模式对左侧的对象进行匹配。

模式匹配修饰符:

/i表示大小写无关的匹配。

/s表示元字符"."可以匹配到换行符。

/x表示原匹配对象中的空白符无效,我们可以随意增加分割用的空白符,

对之前的空格可以使用\s字符集来表示。

修饰符/a表示用ASCII码的方式解释对象中的字符,/u表示用unicode的方式来解释对象中的字符。

锚位修饰符:

\A表示字符串的绝对起始位置--行首。

m{\Ahttps:?://}i;

\z表示字符串的绝对结束位置--行尾(\n之后)。

脱字符(^)表示行首的首锚位,行尾的尾锚位($),/m主要针对这两个锚位修饰符,

使得他们既可以得到行首行尾锚位。又可以锚位字符串首位

\Z表示行尾锚位,不同的是允许之后可以有换行符。

\b表示单词锚位。

/\bfreb\b/;

捕获变量与捕获组中的反向引用相对用:

默认使用$1,$2这样的变量来表示,变量内部存储最近一次成功匹配到的值。

$_ = "Hello there, neighbor";

if(/(\S+) (\S+) (\S+)/) {

print "words were $1,$2,$3 \n"; }

自定义命名捕获变量和关闭捕获。

if(/(?:bronto)?saurus (steak|burger)/)     ##?:表示关闭捕获功能,不会产生$1;

print "I saw $1";                             ##输出steak和burger的捕获值。

if($names =~m/((?<name1>\w+) (and|or) (?<name2>\w+) \g{name1})/)

##在该条语句中直接应用反向引用,在下一条语句中使用引用变量。

print "I saw $+<name1>";

自动捕获变量的存储,经过匹配后的数据,可以分为三部分:

匹配区段之前的字符:可以用$`或${^PREMATCH}

匹配的字符:可以用$&或者$(^MATCH)

匹配之后的字符:可以用$'或者$(^POSTMATCH)

Perl中的匹配(六)的更多相关文章

  1. Perl中的正则表达式

    转自:http://c20031776.blog.163.com/blog/static/684716252013624383887/ Perl 程序中,正则表达式有三种存在形式 分别是 (1 模式匹 ...

  2. Perl中的替换(七)

    在Perl中使用s///进行替换操作,与m//进行查找操作类似. s/with (\w+)/against $1's team/;      ##第一个双斜线,表示被替代的文本.第二个双斜线,表示将替 ...

  3. perl中的grep函数介绍

    grep函数 (如果你是个的新手,你可以先跳过下面的两段,直接到 Grep vs.loops 样例这一部分,放心,在后面你还会遇到它) <pre>grep BLOCK LISTgrep E ...

  4. 在 Perl 中使用 Getopt::Long 模块来接收用户命令行参数

    我们在linux常常用到一个程序需要加入参数,现在了解一下 perl 中的有关控制参数的模块 Getopt::Long ,比直接使用 @ARGV 的数组强大多了.我想大家知道在 Linux 中有的参数 ...

  5. Perl中的正则表达

    前几天用到了Perl语言,主要看了一下Perl中的正则表达式,在各种网页语言中,正则表达式在处理字符串的时候十分有用,所以这里就简单说一下在Perl中正则表达式的应用. 先上代码 #!/usr/bin ...

  6. 在Perl中使用Getopt::Long模块来接收用户命令行参数

    我们在linux常常用到一个程序需要加入参数,现在了解一下perl中的有关控制参数的函数.getopt.在linux有的参数有二种形式.一种是–help,另一种是-h.也就是-和–的分别.–表示完整参 ...

  7. smix到底是个啥?Perl的正则表达式匹配模式

    最近在研究一个perl项目,临时学习了一下perl语法,强行看项目源码.因为总是见到各种正则表达式后面接smxi之类,虽然知道是匹配模式,但脑子里毫无概念.所以特地去学习了一下. 以上为背景. Per ...

  8. 【转载】Perl中字符串编码的处理

    在 Perl看来, 字符串只有两种形式. 一种是octets, 即8位序列, 也就是我们通常说的字节数组. 另一种utf8编码的字符串, perl管它叫string. 也就是说: Perl只熟悉两种编 ...

  9. 【转】perl中尖括号运算符(<>)使用说明

    perl中尖括号运算符的用途分享,这里简单介绍下,方便需要的朋友 perl中<>运算符可以有如下的用途: 1)如果尖括号中间是文件句柄,尖括号运算符允许你读取文件句柄,比如<STDI ...

随机推荐

  1. php---apache的A/B测试

    A/B测试 A/B测试是一种新兴的网页优化方法,可以用于增加转化率注册率等网页指标..A/B测试的目的在于通过科学的实验设计.采样样本代表性.流量分割与小流量测试等方式来获得具有代表性的实验结论,并确 ...

  2. ActiveMQ持久化消息

    ActiveMQ的另一个问题就是只要是软件就有可能挂掉,挂掉不可怕,怕的是挂掉之后把信息给丢了,所以本节分析一下几种持久化方式: 一.持久化为文件 ActiveMQ默认就支持这种方式,只要在发消息时设 ...

  3. 采用asyncore进行实时同步

    最近在维护项目的时候,发现某个实时数据同步功能非常容易失败,故静下心来彻底弄清楚该设计的实现原理,以及其中用到的python异步sockethandler : asyncore. 实时数据同步功能的设 ...

  4. ASP.NET 开发笔记1

    1.GirdView  动态添加列 PostBack 后 模板列中的控件丢失的问题 http://blackboy51.blog.163.com/blog/static/511359122011910 ...

  5. C# base和this

    • 是否可以在静态方法中使用base和this,为什么? • base常用于哪些方面?this常用于哪些方面? • 可以base访问基类的一切成员吗? • 如果有三层或者更多继承,那么最下级派生类的b ...

  6. html5引用公共头尾

    <embed type="text/html" src="head.html" />

  7. JQuery:JQuery设置HTML

    JQuery:设置HTML1.Query - 设置内容和属性设置内容 - text().html() 以及 val()我们将使用前一章中的三个相同的方法来设置内容: text() - 设置或返回所选元 ...

  8. 团队冲刺the second day

    今天是我们的团队冲刺的第二天,由于我的电脑出现了一点问题,系统还原了,我有重新配置了一下环境变量和一些eclipse的问题,导致时间浪费了很多,但是我还是做了一些简单的任务,例如编写节日的页面的布局, ...

  9. android AlarmManager 详解

    在开发互联网应用时候,我们常常要使用心跳来保证客户端与服务器的连接.怎么完成心跳很关键,在说道客户端心跳功能时,如果使用Timer或者专门开起一个线程来做心跳的工作,会浪费CPU工作时间,而且也会更多 ...

  10. 面向对象编程(九)——面向对象三大特性之继承以及重写、Object类的介绍

    面向对象三大特性 面向对象三大特征:继承 :封装/隐藏 :多态(为了适应需求的多种变化,使代码变得更加通用!) 封装:主要实现了隐藏细节,对用户提供访问接口,无需关心方法的具体实现. 继承:很好的实现 ...