文档详情

正则表达式在性能测试中的应用.doc

发布:2016-11-19约4.37千字共5页下载文档
文本预览下载声明
正则表达式在性能测试中的应用 小明终于用性能测试工具录制完成一个脚本,兴冲冲的点下回放按钮,结果满屏红字,整个人都不好了。 找到资深玩家强哥询问,答曰:“没做关联(注一)”。 接着发过来一篇正则表达式(注二)的入门页面说:“先自学吧”。 “啥?关联和正则表达式都是什么鬼?” 求此时小明同学此刻心里阴影面积。 开篇故事是每个初入性能测试行当的人都可能遇到的一个比较挠头的问题。作为IT行当的基本功之一,正则表达式广泛应用于数据提取,模式匹配等多个方面。性能测试过程中的数据关联自然也逃脱不了。每当遇到,驱动Google(呃,还是百度吧,你懂的)一搜,问题解决,下一个。然而前人问题答案不一定完美匹配当下问题,还是得自己动手,丰衣足食。此篇文章便是来八一八这类问题。 正则表达式基本语义: 正则表达式起步一般都从. * ?三兄弟开讲,一般还要把+小弟算上凑成四大金刚。话说 . * ?三兄弟在DOS(九零后同学又问了:DOS又是啥玩意?呃,这个还是改日再说。八零后的兄弟姐妹们至少有所耳闻吧?说起来都是梗,有空再来八)环境下的模式匹配也曾是解决了不少问题的,当时也没听说过什么正则呀?到底模式匹配和正则是好基友还是相爱相杀?这个感情戏还是给那些写手去编吧,咱们后面就只讲干货了。还是一个一个的分头讲,这样能清楚点: . 在DOS(呃,还是说命令提示符吧,好歹还能在开始菜单找到)下就是匹配 . 这个符号的,其他啥都不是。(在那个8.3还要区分主文件名和扩展名的时代……呃,还是不多说了。) 在正则表达式环境中,.可以匹配任意一个字符,可以是数字123,也可以是英文字符abc,还可以是特殊字符+-*一类。总之只要是能敲到显示器上能占位置的字符它都能匹配。 * 在命令行(命令行又是什么鬼?自己悟吧!)下,它才是用来匹配任意一个字符的东西。和正则表达式中的.的作用基本一样。 在正则表达式中,它是用来限定前一个字符的出现次数的,表示前一个字符出现0次到任意次。现学现卖:.*表示匹配任意长度的字符串,可以是什么都没有的空字符串,也可以是3.141592653589793……这样的数字,也可以是 蒸羊羔,蒸熊掌,蒸鹿尾儿......(说着说着都饿了。好了,下不为例)这样的字符串,无论有多长都可以匹配。 ? 在命令行中它是用来表示出现次数0次到1次的一个字符。举个例子,一个目录下有这么几个文件: a.xls a.xlsx a.xlsm a.xlsmx。命令行下敲 dir a.xls? 可以显示出a.xls a.xlsx a.xlsm 但是a.xlsmx就不能匹配了,因为后面多出来了两个字符,超出?的匹配范围了。 在正则表达式中和命令行有点类似但不完全一样。它是表示前一个字符或者准确的说前一个子表达式出现0次到一次,如果要像命令行中那么用,得写成a\.xls.?(前一个.就精确匹配一个点,所以要转义,若不转义,则能匹配到abxls这样的字符串)。比命令行下的略复杂一点,但可以控制是哪些特定字符出现零次到一次。 + 在命令行的模式匹配中+就是加号的意思,没有任何特殊的含义。 在正则表达式中,+也是是用来限定前一个字符的出现次数的,表示前一个字符出现至少一次到任意次。也就是说被它限定过的不能是空串,至少得有点东西。.+是除了空字符串匹配不上外,剩下的.*能匹配的,它都能匹配。 不知道上面的几个重点理解了多少,现在再说点正则表达式中简单点的东西,综合起来举例说明也就清楚了: \ :用来对后面的具有特殊含义的字符进行转义,比如前文出现的\.就是匹配单个.而不是任意字符。要匹配\本身的话,则要写两个\\。 []:用来枚举所有可能出现的字符集合只要是在[]里面出现的就都能匹配,不出现的则不能匹配,[+-*/]就是用来匹配加减乘除任意一个的。但不能匹配%。 {m,n}:m和n都表示数字。用来限定前一个字符或表达式出现次数的下限和上限。{,n}下限忽略表示最少零次,{m,}上限忽略表示任意多次,{m}只写一个的话表示次数精确限定。例如.{3,5}就是用来匹配3到5个任意字符的字符串。 ():用来划范围的,有时后面会跟之前讲到的*?+一类的修饰符,表示这一组出现多少次,而不是之前那种只对单个字符限定出现多少次。举例说明:(abc)?就表示abc要么一起出现一次,要么都不出现,如果写成abc?就成了匹配ab或abc这种的了。还有一种用法是在后续还要引用的时候会用到(),后面遇到了再说。 0-9:用来匹配单个数字字符,因为是范围集合,所以要写成[0-9],如果要匹配不为零的数字则写成[1
显示全部
相似文档