首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

正则表达式笔记(二)——利用模式进行匹配

1.用m// m{} m()m m[] m,, m!! m^^ 等进行匹配

注意:选择模式中不会出现的字符作为定界符

2.模式匹配修饰符(也称标识、副词)

/i进行大小写无关的匹配

/s将点号(.)进一步扩展,能匹配任意字符,包括换行符

/x可以在模式中加入空格,看起来更清楚,但原先的空格和制表符失效,不过\以及\t以及\s可以弥补。此外,还多了分行注释的功能(#)。

修饰符可以搭配使用,如/isx

/m对每一行都进行匹配

3.锚位(在字符串的指定位置匹配)

\A字符串的绝对开头

\z字符串的绝对结尾

\Z行末锚位,允许后面出现换行符

/\A\s*\Z/匹配一个空行

/fred$/m匹配fred以及后面的换行符或者绝对末尾

/^barney/m匹配换行符后面的或者绝对开头

没有m则^与$同于\A与\z

4.单词边界锚位

\b,能匹配任何单词的首尾;/\bfred\b/称为整词匹配

这里的单词是指一连串英文字母、数字与下划线的组合,即/\w+/

非单词边界锚位\B,匹配\b不能匹配的的位置

5.绑定操作符=~

拿右边的模式来匹配左边的字符串,如$some_other=~/\brub/

6.快速消费型代码

读取输入行、匹配字符串和模式、舍弃输入行的内容

Print “Do you like Perl?”;

my$likes_perl==~/\byes\b/i;#绑定操作符的优先级相当高;\byes应该是布尔匹配

if ($likes_perl){

print “…………\n”;

}

7.模式中的内插,即在模式中可以进行双引号形式的内插,如/\A($what)/

8.捕获变量,如$1、$2、$3、$4等

$4指代的是模式中第4对括号所匹配的字符串内容,该内容与反向引用\4表示的内容一样,但它们是两个事物。

$_=“hellothere, neighbor”;

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

print “words were $1 $2 $3\n”;

}

9.不捕获模式

即使用圆括号只是为了分组,而不进行捕获。在左括号后面加上?:

注意:只是不捕获,该匹配的还是得匹配,如/(?:bronto)?saurus (steakburger)/,而捕获变量可以用$1表示。

10.命名捕获

对捕获内容直接命名,具体写法:(?PATTERN),如:

Use 5.010;

My $names =‘Fred or Barney’;

If($names=~m/(?\w+) (?:andor) (?\w+)/){

Say “I Saw $+ and $+”;

}

反向引用的写法也改变了:\g

11.自动捕获变量

字符串中实际匹配模式的部分存储进$&

匹配区段之前的内容存进$`

匹配区段之后的内容存进$’

这三个免费的捕获变量,不加捕获圆括号也能使用。如:

If(“hellothere, neighbor”=~/\s(\w+),/){

Print “this was ($`)($&)($’).\n”;

}——三个自动捕获变量的实际用途

12.通用量词

/a/表示匹配重复出现5次至15次的a

/(fred)/表示匹配出现3次以上的fred

先前讲到的*,+,?也可以用通用量词来表示,它们最常用,所以简化出来。

13.正则表达式的优先级

14.模式测试程序

#! /usr/bin/perl

While(){

Chomp;

If(/PATTERN/){

Print “matched: $`$’\n”;

}else{

Print “no matched: $_\n”;

}

}

这几日看《围城》花了一些时间,此外,和别人聊天也花了许多时间。我该检讨一下,假期的执行力不够,效率低,也容易七想八想。昨日在募格学术上看到一些课程,想来应该会有用,可以听一听。

早上醒来,看到jimmy大佬卖服务器,99块一个月试用。正愁没有服务器练习,我得买来用一用。知识创造财富的又一个事例,真想有一天也能成为像jimmy一样的生信大神。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180211G16VD800?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券