Perl语言入门(第五版) 读书笔记(四)---正则表达式

前端之家收集整理的这篇文章主要介绍了Perl语言入门(第五版) 读书笔记(四)---正则表达式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

第七章~第九章  正则表达式 1. 元字符   点(.)匹配除换行符的任意字符; 反斜线(\)用于转义 2. 量词  (*)零次或多次   (+)一次或者多次   (?)可有可无   a{2,4}匹配a字符2-4次  量词都为贪婪量词,即会尽可能多的匹配;  后面加上?则变为非贪婪量词 3. 模式分组  ()用来分组   \1 \2 引用分组  $_ = "yabba dabba";    if(/y(....) d\1/) {} 4. 择一匹配 或(|)  /fred( +|\t+)barney/ 匹配单词中间有空格或制表符 5. 字符集  [abc]  [a-zA-Z]  [^\d] 6. 模式匹配 m//,m(),m[],m{}都行,用m//时可以简写为// 7. 可选修饰符  /i 大小写无关匹配     if(/yes/i){}  /s 匹配任意字符,此时点(.)号可以匹配换行符   $_ = "barney\n with\nfred";  if(/barney.*fred/s){}  /x 加入空白   /-?\d+\.?\d*/     #挤在一起   /-? \d+ \.? \d*/  #分开能看的清除些  /m 匹配多行  $text = "Fred dropped a 5 ton rock";  my @words = ($test =~ /([a-z]+)/ig);  print "@words\n";  #"Fred dropped a ton rock" 8. 锚位  ^行首  $行尾    \d单词锚位   /\bname\b/ 匹配name,不匹配namespace 9. 匹配(=~)   不匹配(!~) 10. 模式串内插  $what = "name"; /^($what)/ <=> /^(name)/ 11. 捕获变量  $_ = "Hello there,neighbor";  if(/(\S+) (\S+) (\S+)/) {print "words are $1 $2 $3 \n";}  关闭捕获变量(?:),但是仍然占位$N   if(/(?:Hello) (\S+)/)  给捕获变量命名(?<LABEL>PATTERN),访问时用$+{LABEL}  if(/?<name1>\S+/) {say "$+{name1}";} 12. 自动匹配变量  $` : 匹配起始位置之前略过的串  $& : 匹配模式整个串  $' : 匹配结束位置之后的串  if("Hello there,neighbor" =~ /\s(\w+),/) {  print "That was ($`)($&)($')\n"; }     #输出结果为(Hello)( there,)( neighbor) 13. 优先级  圆括号 > 量词 >  锚位和序列 > 择一 > 元素 14. 替换与修饰符  s{__END__.*}{}s;            # 删除掉__END__标记后的内容  $filename = s/^\s+|\s+$//g; # /g表示全局替换   /i /x /s和前述的意义相同 15. 大小写替换  \U 将其后的内容全部转换为大写   s/(fred|barney)/\U$1/gi; #FRED  \L 将其后内容全部转换为小写     s/(Fred|Barney)/\L$1/gi; #fred  \E 结束其后字符的大小写转换     s/(Fred)(Barney)/\U$1\E $2/gi; #FRED barney  \u 将其后第一个字符转换为大写   s/(fred|barney)/\u\L$1/gi; #Fred  \l 将其后第一个字符转换为小写   print "Hello,\L\u$name \n"; 16. split操作符可以使用正则表达式  @fields = split /:/,"::a:b:c::";  #得到("","","a","b","c"),会自动保留开头的空字段,去掉结尾的空字段 17. join函数连接字符串  my $str = join "-",@array ;

猜你在找的Perl相关文章