perl 正则表达式 笔记一

1406阅读 0评论2010-02-11 饼干lr
分类:

正则表达式 笔记
疑问:
模式 /(fred)*/ 能匹配 Hello,world 这样的字符串!
my $dino="I fear that I'll be extinct after 1000 years.";
if ($dino=~/(\d*) years/){
print "That said '$1' years.\n"; # $1为 1000
my $dino="I fear that I'll be extinct after a few million years.";
if ($dino=~/(\d*) years/){
print "That said '$1' years.\n"; # $1为 空字符
例子:
/(.)\g{1}111/
/[\dA-Fa-f]+/  匹配十六进制数字
=~/\byes\b/i;
捕捉: my $names ='fred or barney';
       if($names=~m//(?\w+) (and|or) (?\w+))/){
       say "I saw $+{name1} and $+{name2}";
       }

笔记:
[0-9]                                     简写成\d                反义简写为\D
[A-Za-z0-9_]                              简写成\w                反义简写为\W
匹配一个单词  \w+
\f\t\n\r   换页,制表,换行,回车,空格   简写成 \s               反义简写为\S
\s*  匹配任意数目的空白
\s+  匹配一个以上的空白字符
//是  m//的简写
可选修饰符:
/i 匹配时不区分大小写
/s 匹配时匹配任意字符(与.不同 .不匹配换行符  而/s可以用来匹配他们)
/x 匹配时加入空白
锚位
^开头$结尾
\b单词边界锚位(整词搜索模式)
绑定操作符=~拿右边的模式来匹配左边的字符串

关闭分组功能
(/?:XXXX)
上一篇:perl运算符
下一篇:perl localtime