正则表达式-1
来源:互联网 发布:sql*plus命令 编辑:程序博客网 时间:2024/06/08 04:18
-1----------------------------------------------------------------------------------什么是正则表达式? 正则表达式(regular expression),在perl里通常是也叫模式匹配(pattern),是用来表示 匹配(不匹配)某个字符串的特征的模板。 使用简单模式: $_='yabb dabba doo'; if(/abba/) { print "It matched\n"; } 表达式/abba/会在$_查找这个四个字组成的字符串,如果找到返回真。 Unicode属性: Unicode字符能够理解自身含义,它们不只是简单的字节序列。每个字符除了字节组合之外, 还附带着属性信息。 若要匹配某项属性,只需要把属性名放入\p{PROPERTY}里面。比如匹配有许多空白符 (whitespace),相应的属性名为Space,所以匹配带有这属性字符,可以用\p{Space}表示: if(\p{Space}) #总共有26个不同的字符带有此属性 { print "The string some whitespace\n"; } if(/\p{Digit}/) #总共有411个不同的字符带有些属性 { print "The string has a digit\n"; } 关于元字符: 点(.):是能匹配任意一个字符的通配符(除换行符\n) 星(*):是能匹配前面的条目零次或多次。 加(+):是能匹配前面一个条目一次或一次以上 问号(?):是匹配前一个条目出现一次或零次 模式分组: 在正则表达式中,圆括号((),或称小括号)的作用是对字符串的分组。因此也是元字符。 /testtesttest/; /(test)+/; 圆括号中模式匹配的文字也称为捕获组。 反向引用的写法是在反斜线后面接上数字编号 \1,\2像这样。 $_='abba'; if(/(.)\1/)#匹配bb,(\.)\1表明需要匹配连连续出现的同样的字符。 { print "$_\n"; } $_='yabba dabba doo'; if(y(....) d\1)#匹配abba { print "get\n"; } $_='aa111bb'; if(/(.)\111/) { print "get\n"; } 像这样连续出多个数字,那在这里到底是要匹配\1,\11,还是\1111呢? 其实在这个问题上perl逻辑很简单,它尽可能创建多数量的反引用,所以最终匹配\111. \g{1},这样就能消除部分的二义性。 if(/(.)/\g{1}11) { print "get\n"; } 还可以引用负数 $_='xaa11bb'; if(/(.)(.)\g{-1}11/) { print "get\n"; } 选择一个匹配: 竖线(|) :通常读或,意思是要么匹配在左边的内容,要么匹配右边的内容 if(/fred|barney|test/) { print "get\n"; } 匹配字符集: 字符集(character class)指的是一组可能出现的字符,通常写在Y方括号内[]表示 $='Teh HAL-90000 requires authorization to contine.'; if(/HAL-[0-9]/) { print "$_\n"; } 要想匹配这些字符集除外可以在前面加脱字符(^) [^0-9] 表示匹配除0-9以外的字符 字符集的简写: \d 表示匹配数字集等同于[0-9] \s 表示匹配任意空白符,效果等等同于unicode属性的\p{Space} \s 仅能表示以下5个字符换页符(form-feed),水平制表(tab),换行符(newline), 回车符(carriage return)及空格符本身[\f\t\n\r] \h 表示匹配水平空白符 \v 只能匹配垂直空白符 \h\v并起来就成了\p{Space} \w 称作"单词"字符,尽管它能匹配的字符并不是严格意义上的单词。 在ASCII语义下,\w匹配是一组字符:[a-zA-Z0-9]-1----------------------------------------------------------------------------------
0 0
- 正则表达式-《精通正则表达式》1
- 【正则表达式1】C++11正则表达式
- 精通正则表达式:1 正则表达式入门
- 正则表达式1
- 正则表达式 例1
- 正则表达式(1)
- 正则表达式1
- 正则表达式(1)
- 正则表达式使用1
- 正则表达式(1)
- 正则表达式(1)
- 正则表达式 1(转)
- 正则表达式 1
- 正则表达式1
- 正则表达式教程-1
- 常用正则表达式1
- 正则表达式小记(1)
- 正则表达式1
- 一个轻量级 Python 装饰器的缓存库——wrapcache
- 输入整型数组和排序标识,对其元素按照升序或降序进行排序
- Java类锁和对象锁实践
- 1012. 数字分类 (20)
- hud-3400-Line belt(三分)
- 正则表达式-1
- Peach 安装,使用
- Struts2注解配置方式
- springmvc中@PathVariable 和 @RequestParam 的区别
- 浮点型的字面值
- TortoiseSVN的具体使用方法
- bool值的字面值
- 相关收集
- Struts2 param的作用