这里没有软件测试的泛泛理论,只有博主的最佳实践。 博主的研究方向为静态分析和性能测试,致力于各种测试工具的引入、评估和开发。 本博的测试文章均为作者原创,转载请务必注明出处。

小骆驼书作业八:以正则表达式进行匹配

上一篇 / 下一篇  2008-07-16 10:21:20 / 个人分类:Perl

毫无疑问,正则表达式这两章是整本小骆驼书中最难的,这里的难不仅是指其技术复杂度,也包括其繁杂的各种标记。要想得心应手的玩转正则表达式,要做大量的练习。当然这三章还要再翻N遍,其中的一些小技巧在刚开始看的时候没觉得什么,但在真正用的时候又翻到那,再见到那些小技巧,简直是优点欣喜若狂。

本作业最基本,同时也是练习正则表达式最好的一个“模式测试程序”

#!/usr/bin/perl -w
print "please input your string:\n";
while(<>)
{
  chomp;
  if(/match/)
  {
   print "Matched: | $`<$&>$'|\n";
  }
  else
  {
   print "no matched: |$_|\n";
  }
}

以上也是习题一的答案,很简单,匹配的是match这个字符串。
$&存储的是字符串里实际匹配模式的部分;
$`存储的是前置字符串,$'存储的是后置字符串。
$`$&$'可以将这三个字符串连接起来,一定会还原整个字符串。

习题二:匹配任何以字母a结尾的单词(\w组成的单词)

上面提到以a结尾的单词,应该敏锐的感觉到要用“单词锚点”(\b),相当于文字处理器搜索中的“整字匹配”模式。另外\w并不会匹配一个单词,它只会匹配一个字符,\w+可匹配单词。

答案也很简单,直接用  if(/\w+a\b/) 替换以上的匹配行即可。标准答案更简单,直接用/a\b/,呵呵

复习笔记

  1. \w并不会匹配一个单词,它只会匹配一个字符,\w+可匹配单词。
  2. \s擅长处理空白,它可包含5种空白字符:换页、制表、换行、回车以及空格
  3. \s*匹配任意数目的空白,或用\s+匹配一个以上的空白
  4. .会匹配换行符(\n)以外的所有单个字符,如果要匹配所有字符,可用/.//s表示
  5. *与{0,}相同,表示零次或多次
  6. +与{1,}相同,表示一次以上
  7. ?与{0,1}相同,表示前一个项目可有可无。
  8. \b表示单词锚点
  9. ^和$表示字符串锚点
  10. /^\s*$/表示一个空白行

内容很多,一步步来,一次记住一点就好。


TAG: Perl

 

评分:0

我来说两句

Open Toolbar