正则表达式主要是针对字符串进行操作,可以简化对字符串的复杂操作,可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。当然最基本的还是匹配提取、校验。

功能测试/自动化脚本里,经常会需要使用正则表达式来提取或匹配校验一些值。

正则表达式几乎可以满足你对字符串的所有检索要求。

JMeter 的正则表达式提取器

image

Apply to:应用范围
要检查的响应字段:样本数据源。
引用名称:其他地方引用时的变量名称,我这里写的phone,可自定义设置,引用方法:${引用名称}
正则表达式:数据提取器,()括号里为你要获取的的值。"mobilephone":"( 相当于LR左边界, )","leaveamount"相当于LR右边界。而括号里\d+为正则表达式,用来匹配所需要获取的数据,何谓正则表达式文章末尾会附上说明
模板:用于从找到的匹配项创建字符串的模板。这是一个带有特殊元素的任意字符串,用于引用正则表达式中的组。引用组的语法是:' $ 1 $ '引用组1,' $ 2 $ '引用组2,等等。$ 0 $引用整个表达式匹配的内容。
匹配数字:正则表达式匹配数据的所有结果可以看做一个数组,匹配数字即可看做是数组的第几个元素。-1表示全部,0随机,1第一个,2第二个,以此类推。若只要获取到匹配的第一个值,则填写1
缺省值:匹配失败时的默认值。可以不写。若需用于后续逻辑判断,可简单写为 ERROR

示例:需要将"id":82,"mobilephone":"150****7414", 用户 id、手机号码都取出用作后续使用。
image

如何编写正则表达式

  1. 基本语法
    image
    image
    image
    image
    image

  2. 使用示例

获取被空格隔开的每个数字

8192.0 8192.0 6400.0  0.0   41984.0  36845.6   220160.0
正则表达式:[0-9]+(\.)?[0-9]*\b

匹配字符串是否为 Email 地址

^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

Java 的正则工具包

可以使用 JDK 自带的 Matcher 与 Pattern 方法,
这里推荐使用 Hutool 的正则工具-ReUtil

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.4.3</version>
</dependency>

// 查找所有匹配文本
String content = "ZZZaaabbbccc中文1234";
List<String> resultFindAll = ReUtil.findAll("\\w{2}", content, 0, new ArrayList<String>());
// 结果:["ZZ", "Za", "aa", "bb", "bc", "cc", "12", "34"]

Python 的正则工具包

# 校验字符串是否为数字
import re
pattern = re.compile(ur'^[0-9]*$')
str = u''
print(pattern.search(str))

扫一扫,关注我


↙↙↙阅读原文可查看相关链接,并与作者交流