分类: 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"
接下來加上 s 修飾子後,\n就等於是"一個字元, . 就能匹配空格换行之类的",也等於'\n';否則未加s的情況則不屬於一個字元,也就是和 '.' 比對不會成功:
$str =~ s/wonder.?ful/www/sg; What a www www world
另比較少見的情形下會用到的 m 修飾子:一般比對時假設要找出字串結尾的字串,常會用變換字元 $,在帶有換行的字串中,變換字元 $只會比對最後的換行或是字串結尾。如果希望 $能取得符合帶有換行的字串中,每個換行都視為結尾的話,就要加 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修饰符能够将$匹配每行的最后,并不是最后一行的最后。