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

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

$_ = "yabba dabba doo";      if(/ab\tba/)   {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(.)(.)\2\1/)   {print "";}        ##\1,\2分别对应顺序的捕获组,按左括号的顺序来标号。匹配进行时的引用

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

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

保证序号不需要改变

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

/fred( |\t)+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([\d\D])        ##匹配任意的字符,包括换行符,比元字符(.)范围还要广。

最新文章

  1. Java数据结构——树的三种存储结构
  2. Kooboo CMS 之TextContent详解
  3. JS高级程序设计 笔记
  4. 对 web.config 节点信息进行加密
  5. 移动web前端小结(一)--摘自小鹿_同学
  6. android-对话框
  7. java对xml文件做增删改查------摘录
  8. CMD魔法堂:CMD进入指定目录
  9. C和指针笔记 3.6链接属性
  10. PostgreSQL Replication之第十二章 与Postgres-XC一起工作(2)
  11. Visual Studio 2012 主题下的代码配色方案
  12. 编写一个JavaScript函数 parseQueryString,把URL参数解析为一个对象
  13. JS----Issue
  14. android中使用setVideoURI()播放视频
  15. [DEEP LEARNING An MIT Press book in preparation]Deep Learning for AI
  16. Android游戏开发研究与主角在地图滚动
  17. PyTorch官方中文文档:torch.Tensor
  18. Spring boot整合ElasticSearch案例分享+bboss
  19. 填一个laravel视图缓存没有及时更新的坑
  20. css样式之属性操作

热门文章

  1. This dependency was not found: * !!vue-style-loader!css-loader?……解决方案
  2. netstat命令的安装
  3. demo:使用数字证书进行数字签名和加密,解密
  4. calloc(), malloc(), realloc(), free(),alloca()
  5. SSH 服务器不用密码
  6. C# 多线程ManualResetEvent、等待所有线程
  7. 【CF886E】Maximum Element DP
  8. SQL已存在则更新不存在则插入
  9. java虚拟机的符号引用和直接引用
  10. Nginx 日志 worker_connections are not enough while connecting to upstream