正则表达式 笔记
疑问:
模式 /(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)
阅读(1386) | 评论(0) | 转发(0) |