通用知识 - 正则表达式

通用知识-正则表达式

一:快速入门

1:什么是正则表达式

正则表达式是一种匹配和操作文本的工具,常用于文本查找,文本替换,文本格式校验等等。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2:正则表达式的语法分类【重点】

在这里插入图片描述

2.1:普通字符

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2:字符集合

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3:限定符

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4:定位符

在这里插入图片描述
在这里插入图片描述

2.5:子表达式(重中之重)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.6:省略符

在这里插入图片描述
在这里插入图片描述

2.7:修饰符

在这里插入图片描述
在这里插入图片描述

3:Java基本操作

String content = "xxxx"; // 待匹配的字符串
Pattern p_script = Pattern.compile("正则表达式", Pattern.CASE_INSENSITIVE); // pattern
Matcher m_script = p_script.matcher(content); // 进行匹配操作
while (m_script.find()) {
    // 找到匹配内容,进行后续事情
    String strAid = m_script.group(1);
    // todo
}
3.1:常用方法

matches(): 返回整个目标字符串与Pattern是否匹配

find(): 返回与Pattern匹配的下一个子串

group(): 返回上一次与Pattern匹配的子串中的内容。

  • group是针对()来说的
  • group(0)就是指的整个串
  • group(1)指的是第一个括号里的东西
  • group(2)指的第二个括号里的东西

start(): 返回上一次与Pattern匹配的子串在目标字符串中的开始位置

end(): 返回上一次与Pattern匹配的子串在目标字符串中的结束位置加1

二:基础正则表达式速查表

1:字符

表达式描述
[abc]字符集。匹配集合中所含的任一字符。
[^abc]否定字符集。匹配任何不在集合中的字符。
[a-z]字符范围。匹配指定范围内的任意字符。
.匹配除换行符以外的任何单个字符。
\转义字符。
\w匹配任何字母数字,包括下划线(等价于[A-Za-z0-9_])。
\W匹配任何非字母数字(等价于[^A-Za-z0-9_])。
\d数字。匹配任何数字。
\D非数字。匹配任何非数字字符。
\s空白。匹配任何空白字符,包括空格、制表符等。
\S非空白。匹配任何非空白字符。

2:分组和引用

表达式描述
(expression)分组。匹配括号里的整个表达式。
(?:expression)非捕获分组。匹配括号里的整个字符串但不获取匹配结果,拿不到分组引用。
\num对前面所匹配分组的引用。

3:锚点和边界

表达式描述
^匹配字符串或行开头。
$匹配字符串或行结尾。
\b匹配单词边界。比如Sheep\b可以匹配CodeSheep末尾的Sheep,不能匹配CodeSheepCode中的Sheep
\B匹配非单词边界。比如Code\B可以匹配HelloCodeSheep中的Code,不能匹配HelloCode中的Code

4:数量

表达式描述
?匹配前面的表达式0个或1个。即表示可选项。
+匹配前面的表达式至少1个。
*匹配前面的表达式0个或多个。
``或运算符。并集,可以匹配符号前后的表达式。
{m}匹配前面的表达式m个。
{m,}匹配前面的表达式最少m个。
{m,n}匹配前面的表达式最少m个,最多n个。

5:断言

表达式描述
(?=)正向预查。比如Code(?=Sheep)能匹配CodeSheep中的Code,但不能匹配CodePig中的Code
(?!)正向否定预查。比如Code(?!Sheep)不能匹配CodeSheep中的Code,但能匹配CodePig中的Code
(?<=)反向预查。比如(?<=Code)Sheep能匹配CodeSheep中的Sheep,但不能匹配ReadSheep中的Sheep
(?<!)反向否定预查。比如(?<!Code)Sheep不能匹配CodeSheep中的Sheep,但能匹配ReadSheep中的Sheep

6:特殊标记

表达式描述
/.../i忽略大小写。
/.../g全局匹配。
/.../m多行修饰符。用于多行匹配。

三:常用正则表达式示例

直接参考大佬的笔记链接

<think>嗯,用户想了解如何使用JMeter的正则表达式提取器来提取token。首先,我需要回顾一下相关知识。根据引用[3],正则表达式提取器是后置处理器的一种,用于从取样器的响应结果中提取内容。用户需要的是具体步骤和示例。 首先,我应该列出使用步骤。根据引用[1]和[2],步骤包括添加提取器、配置参数、引用变量。然后,需要具体说明每个参数的设置,比如引用名称、正则表达式模板等。引用[4]提到变量引用的方式,所以最后要说明如何使用${token}。 接下来是示例部分。用户需要一个实际例子,比如登录接口返回的JSON中包含token。这时候正则表达式应该怎么写?比如"token":"(.*?)",这样非贪婪匹配。左右边界要明确,确保正确提取。可能需要处理多个匹配,但用户可能只需要第一个,所以模板$1$。 还要注意常见问题,比如正则表达式是否正确,是否处理了特殊字符,或者是否需要转义。引用[2]中的疑难杂症部分可以提到这些,比如左右边界不确定怎么办,或者多个值的情况。此外,可能需要建议测试正则表达式是否有效,比如使用调试取样器。 最后,生成相关问题,比如如何提取多个值,或者JSON提取器的比较,这样用户如果有进一步的问题可以继续探索。确保回答结构清晰,步骤明确,示例具体,这样用户能跟着操作。</think>### JMeter正则表达式提取器提取Token使用方法 #### 一、操作步骤 1. **添加取样器**:在需要提取Token的HTTP请求下添加取样器(如登录接口)[^3]。 2. **添加正则表达式提取器**:右键点击取样器 → 添加 → 后置处理器 → 正则表达式提取器[^1]。 3. **配置参数**: - **引用名称**:自定义变量名(如`token`) - **正则表达式**:根据响应内容编写,如`"token":"(.*?)"` - **模板**:`$1$`(表示提取第一个捕获组) - **匹配数字**:`1`(取第一个匹配项) - **缺省值**:`NOT_FOUND`(可选) ```plaintext 示例配置: 引用名称: token 正则表达式: "token":"(.*?)" 模板: $1$ 匹配数字: 1 ``` 4. **引用变量**:在后续请求中使用`${token}`调用提取值,如请求头中添加`Authorization: Bearer ${token}`[^4]。 --- #### 二、实际应用示例 **场景**:登录接口返回JSON数据: ```json {"code":200, "data":{"token":"abc123xyz"}, "msg":"success"} ``` **正则表达式配置**: - 精确匹配:`"token":"([^"]+)"` 解释:匹配双引号内的任意非引号字符 - 通用匹配:`"token":"(.*?)"` 解释:非贪婪模式匹配最短内容 --- #### 三、注意事项 1. **特殊字符转义**:若响应内容包含`\`或`"`,需使用`\`转义,如`\\"token\\":\\"(.*?)\\"` 2. **调试技巧**: - 使用`Debug Sampler`查看提取结果 - 在`View Results Tree`中检查响应数据格式 3. **性能优化**:正则表达式尽量具体,避免`.*`过度匹配[^2] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值