Posted on 2010-01-05 18:09
zdxue 阅读(390)
评论(0) 编辑 收藏
1.正则术语
模式
元字符(在任何元字符前面加上\,它就失去元字符的意义。如 /3\.1415926/)
. 任意字符(回车/换行除外, \.表示点号本身)
\ (如果要表示反斜线本身,使用\\)
() 分组符号
/ 正则
简易量词
? 一次或0次
+ 至少一次
* 0次或多次
{n}
{n,}
{n,m}
模式分组
反向引用(相当于指定分组的复制) \N 反斜线后面的数字和模式分组的组号匹配。 如: "abba" /(.)\1/ 返回真, ab假 bb真 ba假 最终找到一个匹配的bb
反向引用在5.10有新的表达方式: \g{N} 如果N为负数,表示相对反向引用(即分组从右向左数)另外,必须use 5.010;
择一匹配
或运算 | 例: /X|y/ 匹配X或y
字符集与取反
[] 通常用中括号表示. 如: [a-zA-Z0-9] , 只匹配字符集中的单个字符!
简写字符集:
\d
\w
\s
\D
\W
\S
取反
^ 例: [^abc] 匹配除abc之外的任意字符
可选修饰符(可以组合使用):
加在正则最右边
i 表示不区分大小写
x 表示加入空白
s 表示匹配任意字符
组合:
is
ix
xs
锚位:
^ 行的开头
$ 行的结尾
\b 单词边界 (一个单词 由\w组成的单词)
\B 非单词边界
\A 输入的开头
\G 上一个匹配的结尾
\Z 输入的结尾,仅用于最后的结束符(如果有的话)
\z 输入的结尾
绑定操作符:
=~
捕获变量以及其生命周期:
$1
$2
$3
$4
...
有多少个组,就会有多少个捕获变量
上面的写法,可以使用use 5.010的命名捕获来改写:?<label>pattern, 访问时用: $+ (label)
三个自动匹配变量:$&, $', &`
不捕获:
模式串中的内插:
即意思是模式本身可以由变量构成
如:
my $name = "xue";
if(/^($name)/) {
}