Chinaunix首页 | 论坛 | 博客
  • 博客访问: 147943
  • 博文数量: 47
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 402
  • 用 户 组: 普通用户
  • 注册时间: 2013-03-11 10:08
文章存档

2013年(47)

我的朋友

分类: PERL

2013-03-25 10:54:02

Perl正则表达式中模式匹配选项

选项描述
g匹配所有可能的Perl正则表达式中模式
i忽略大小写
m将串视为多行
o只赋值一次
s将串视为单行
x忽略Perl正则表达式中模式中的空白

1、匹配所有可能的Perl正则表达式中模式(g选项)

@matches="balata"=~/.a/g;#now@matches=("ba","la","ta")
匹配的循环:
while("balata"=~/.a/g){
$match=$&;
print("$match\n");
}
结果为:
ba
la
ta
当使用了选项g时,可用函数pos来控制下次匹配的偏移:
$offset=pos($string);
pos($string)=$newoffset;

2、忽略大小写(i选项)例

/de/i匹配de,dE,De和DE。

3、将字符串看作多行(m选项)

在此情况下,^符号匹配字符串的起始或新的一行的起始;$符号匹配任意行的末尾。

4、只执行一次变量替换例

$var=1;
$line=;
while($var<10){
$result=$line=~/$var/o;
$line=;
$var++;
}
每次均匹配/1/。

5、将字符串看作单行例

/a.*bc/s匹配字符串axxxxx\nxxxxbc,但/a.*bc/则不匹配该字符串。

6、在Perl正则表达式中模式中忽略空格

/\d{2}([\W])\d{2}\1\d{2}/x等价于/\d{2}([\W])\d{2}\1\d{2}/。

阅读(1233) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~