jmeter教程(七):正则表达式简介

在后面讲关联和断言,都会涉及到正则表达式,那么,就先简单的介绍一下正则表达式吧。

正则表达式的定义,这里就不说了,百度里应该有。正则表达式可以做什么?处理文本,也只能处理文本。正则表达式,也常被程序员戏称为“火星文”,从这个称谓可以看出,正则表达式很难看懂。难到什么程序呢?当你写完一个比较复杂的正则之后,回过头来看,却可能发现自己都看不懂了,正则表达式就是有这么神奇!当然,如果一个功能,用正则来处理,也要写得很复杂的话,那如果不用正则,就可能是洋洋洒洒一大篇了。

先来看正则表达式里独有的转义字符。有\d、\D、\w、\W、\s、\S,这些转义字符,都是成对的出现,小写和大写的意义取反。比如\d代表数字,\D则代表非数字。\w代表文档字符,\W取反。\s代表空白字符,\S代表非空白字符。注意:很多人会使用\w去匹配数字字母,如果是使用较早的正则引擎的话,会有问题,\w不仅会匹配数字字母,还会匹配中文字符,包括中文的标点符号。现在的版本,好像\w都只匹配数字和字母了,试了下java和js都是这样。然后一些通用的转义字符,如\t、\n、\f等,在正则也一样有用。

通配符是“.”,也就是英文的句号,很多人会把这个通配符理解为匹配所有字符,这是不对的,这个通配符是匹配除换行符及换页符之外的所有字符。如果要匹配所有字符,应该用“\s\S”类似的表达式。

量词,有*、?、+及花括号表达式,*代表可以不出现,也可以出现,并且出现次数不限制。比如\d*,就代表字符串中可以没有数字字符,也可以有数字字符,数字字符出现多少次不限制。“1234”、“asdr”、“sd223”这些字符串都可以匹配\d*。?代表可以不出现,也可以出现一次。“asdf”、“sdf2”这些都可以匹配\d?,“234a”匹配\d?就不行了,因为数字字符出现了三次。+代表至少出现一次,最多出现多少次不限制,“23ssd”、“sd2df”这些可以匹配\d+,“akds”匹配\d+就不行了。花括号形式如\d{4},这个代表只能有四个数字字符,比如手机号只能是11位的数字,就可以使用\d{11}匹配用户的输入,如果不匹配,则代表用户的输入不合法。\d{8,16},代表数字字符至少要有8位,最多只能有16位。\d{,12}代表数字字符可以不出现,也可以出现,但数字字符最多只能有12个。\d{3,}代表数字字符至少要出现3次,最多出现多少次,不限制。

中括号表达式,形如[abc]这样的。这个表达式的意思是,匹配a或b或c。在中括号中还可以使用-来表示取一个区间的值,如[0-9]和[0123456789]是一样的意思,也就是匹配数字字符。在中括号中可以使用^来表示取反,^必须放在中括号里第一个字符的位置。如[^0-9]代表除去数字字符之外的任意字符,也就是非数字字符的意思了,[0-9^a-z]这样写是不行的。在中括号表达式里面,不能使用\d、\D、\w、\W、\s、\S这些转义字符,如[^\d]这样是不行的。

边界字符,^代表字符串的起始位置,$代表字符串的结束位置,比如^abc,那么字符串必须以abc开头,才可以匹配上。abc$,则字符串必须以abc结尾,才可以匹配上。^abc$,就只能匹配abc字符串了。\b代表单词边界,在英文中,单词以空格分隔,这个是看得见的分隔符,看不见的是,单词的前后,都会有一个\b字符,所有要匹配is单词,就要写\bis\b,这样就不会把this匹配上了,因为在th和is之间没有\b边界符。\B就是非单词边界符了。

组,分为捕获组和非捕获组。呃,这个讲起来,没有例子,很难讲呢,这个在讲jmeter里的关联和正则表达式提取器再讲吧

猜你喜欢

转载自blog.csdn.net/kingzhsh/article/details/84874194