Chinaunix首页 | 论坛 | 博客
  • 博客访问: 78845
  • 博文数量: 28
  • 博客积分: 579
  • 博客等级: 中士
  • 技术积分: 245
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-30 18:17
文章分类

全部博文(28)

文章存档

2012年(1)

2011年(27)

我的朋友

分类: Python/Ruby

2011-12-05 13:54:43

 

\U 就将其后转换为相应的大写

\L 就将其后转换为相应的小写

/i 能够忽略大小写

/s 能匹配任意字符  /.*/s  能够配置如何字符

 

 設我想把找到的結果全轉成大寫,一般的置換就傷透腦筋了,可是perl提供了不錯的解法,但是要使用函數,就得加上 e 修飾子:

$str = "What a wonderful wonderful world.";
$str =~ s/w\w+/uc($&)/ge;    # $str = "What a WONDERFUL WONDERFUL WORLD"

接下來加上 修飾子後\n就等於是"一個字元,  . 就能匹配空格换行之类的",也等於'\n';否則未加s的情況則不屬於一個字元,也就是和 '.' 比對不會成功:
$str =~ s/wonder.?ful/www/sg;   What a www www world
 

另比較少見的情形下會用到的 修飾子:一般比對時假設要找出字串結尾的字串,常會用變換字元 $,在帶有換行的字串中,變換字元 $只會比對最後的換行或是字串結尾。如果希望 $能取得符合帶有換行的字串中,每個換行都視為結尾的話,就要加 m。這樣形容比較抽象,看個範例:

$str = "line123\nline456\nline789";
$str =~ s/\d+$//g;    <==
注意沒有加
m
print $str;

line123
line456
line     <==
只比對最後一個

$str =~ s/\d+$//mg;   <== 注意現在加了 m
print $str;

line    <==每個換行符號都視為結尾
line
line

简单来说m修饰符能够将$匹配每行的最后,并不是最后一行的最后。

 

 

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