这里没有软件测试的泛泛理论,只有博主的最佳实践。
博主的研究方向为静态分析和性能测试,致力于各种测试工具的引入、评估和开发。
本博的测试文章均为作者原创,转载请务必注明出处。
小骆驼书作业八:以正则表达式进行匹配
上一篇 /
下一篇 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/,呵呵
复习笔记
- \w并不会匹配一个单词,它只会匹配一个字符,\w+可匹配单词。
- \s擅长处理空白,它可包含5种空白字符:换页、制表、换行、回车以及空格
- \s*匹配任意数目的空白,或用\s+匹配一个以上的空白
- .会匹配换行符(\n)以外的所有单个字符,如果要匹配所有字符,可用/.//s表示
- *与{0,}相同,表示零次或多次
- +与{1,}相同,表示一次以上
- ?与{0,1}相同,表示前一个项目可有可无。
- \b表示单词锚点
- ^和$表示字符串锚点
- /^\s*$/表示一个空白行
内容很多,一步步来,一次记住一点就好。
相关阅读:
- 小骆驼书作业一:简介 (huior, 2008-6-29)
- 小骆驼书作业二:标量数据 (huior, 2008-6-30)
- 小骆驼书作业三:列表和数组 (huior, 2008-7-03)
- 小骆驼书作业四:子例程 (huior, 2008-7-04)
- perl (brighten, 2008-7-06)
- 小骆驼书作业五:输入与输出 (huior, 2008-7-07)
- 小骆驼书作业六:散列 (huior, 2008-7-07)
- 小骆驼书作业七:正则表达式 (huior, 2008-7-08)
- Perl子例程的实践 (fishy, 2008-7-09)
- 小骆驼书作业十:其他控制结构 (huior, 2008-7-15)
收藏
举报
TAG:
Perl