perl学习记录(三)
perl学习记录之正则表达式学习记录 模式中引入了不少特殊字符,叫做元字符,在正则表达式中表达特殊的含义。 1、(.)?点号是任何单字符的匹配符,除了换行符(n)。 2、在任何元字符面前加上反斜线,就会使它失去元字符的特殊作用。 3、量词:星号(*)正是用来匹配前面内容零次或者多次的。 ??加号(+)是匹配前面内容一次以上的。 ??问号(?)匹配前面内容可有可无,有的话匹配出现一次。 ??通用量词{},如果上面三个量词都不需要,还可以在花括号里指定重复次数的范围。 4、模式分组:圆括号()。圆括号也是元字符。1?,2的写法就是在使用反响引用。 Perl5.10有一种新的反向引用写法g{N},其中N是反向引用的组号。 5、择一匹配(|)。 6、字符集,字符集是指一串可能出现的字符集合,通过写在方括号[]内来表示。但它只匹配单个字符,但可以是字符集里列出的任何一个。在方括号[]中用的比较多的是连字符(-)。在方括号[]以外连字符只是普通字符。 也可以在字符集内部开头的地方加上脱字符(^),表示这些字符除外。也就是说[^abc]会匹配除a、b、c以外的任何字符。 7、d?代表任意数字的字符集[0-9],w代表单词字符字符集[A-Za-z0-9_]。 8、s简写擅长处理空白,相当于[ftnr?],包含5中空白的字符集:换页,制表,换行,回车以及空格。 9、D相当于[^d],W相当于[^w],S相当于[^s]。 10、可选修饰符: 使用/i修饰符时,可以让你在进行模式匹配时不区分大小写。例如/yes/i?可以匹配yes??YES等。 使用/s修饰符时,可以让模式中的(.)点号相当于[dD],能够匹配换行符。 使用/x修饰符能够在模式里面随意加上空白,目的是使他更容易阅读,理解。 当然这些可选修饰符可以组合使用。也当然有很多其他的选项,这里不一一介绍了。 11、锚位,默认情况下,模式匹配的过程开始于待匹配字符串的开头,如果不相符就一直往字符串后面浮动,看其他位置是否能匹配。但是加入一些锚位,可以让模式直接匹配字符串的某处。脱字符(^)是一个锚位,用来表示字符串的开头,美元符号($)也是一个锚位,用来表示字符串的结尾。 单词锚位,锚位并不局限于字符串的首尾。比如b是单词边界锚位。B是非单词边界锚位。 12、在perl中,默认情况下模式匹配的对象是$_,绑定操作符=~则能让Perl拿右边的模式来匹配左边的字符串,而非匹配$_。 例如if($some_other=~/perl/){} 13、捕获变量,圆括号同时同时也启动了正则表达式处理引擎的捕获功能。捕获功能是指把(圆括号中模式所匹配的)部分字符串暂时记下来的能力。每个被捕获的是原本的字符串,而不是模式。被捕获的字符串存储在标量变量中,他们的名字类似$1或者$2,$2的意思就是第2对括号捕获的字符串。 14、针对第13条,如果不做处理,圆括号都会捕捉部分的匹配串到捕获变量$1,$2中等,但有时侯需要关闭这个功能。在左括号的后面加上问号和冒号(?:),以告知Perl这一对括号完全是为了分组而存在的。 15、命名捕捉,即我们可以把我们捕捉的字符串存能够用我们自己命名的LABLE来表示,而不再用$1,$2等来表示。为捕获串加标签的方法是使用(?<LABEL>PATTERN)这样的方式,而使用捕获的字符串时则用$+{LABEL}这样的形式来表示。 16、元字符的优先级次序 圆括号 量词 锚位和序列 择一 元素 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |