You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JMeter中用正则表达式忽略HTML标签并提取内容与XML对比?

解决JMeter中提取

内容时忽略斜体标签的问题

嘿,我来帮你搞定这个匹配失败的问题!你遇到的核心问题是正则表达式把<p>标签里的<i>/</i>也一起提取了,导致和XML里去掉<italic>后的纯文本对不上。下面给你几个实用的解决办法:

方法1:改进正则表达式 + 字符串替换

如果坚持用正则提取,可以先把<p>内的所有内容(包括<i>标签)提取出来,再通过替换去掉斜体标签:

  • 先用这个正则提取整个<p>区块:(?s)<p>(.*?)</p>
    • 解释:(?s)让.匹配换行符,.*?是非贪婪匹配,确保只匹配到第一个</p>
  • 然后在Beanshell断言里对提取到的变量做替换:
// 获取正则提取的内容
String htmlContent = vars.get("extractedPContent");
// 去掉所有<i>和</i>标签
String cleanedHtml = htmlContent.replaceAll("<\\/?i>", "");
// 准备XML侧的目标内容(去掉<italic>标签后的文本)
String targetXmlContent = "testing contenttesting content";
// 对比判断
if (cleanedHtml.equals(targetXmlContent)) {
    AssertionResult.setFailure(false);
} else {
    AssertionResult.setFailure(true);
    AssertionResult.setFailureMessage(String.format("内容不匹配:预期[%s],实际[%s]", targetXmlContent, cleanedHtml));
}

方法2:用CSS/JQuery提取器(更推荐)

处理HTML内容,正则不如专门的HTML解析工具靠谱。JMeter自带的CSS/JQuery提取器可以直接提取文本内容,自动忽略标签:

  1. 添加CSS/JQuery提取器到你的请求下
  2. 配置参数:
    • 引用名称:比如cleanedPText
    • CSS/JQuery表达式:p(选中所有<p>标签)
    • 属性:text(提取标签内的纯文本,自动忽略子标签)
  3. 这样提取到的cleanedPText就是testing contenttesting content,直接和XML的目标内容对比就行,不用再处理标签!

为什么你之前的正则不行?

  • 你用的<p>(.*)</p>是贪婪匹配,会把<p>到</p>之间的所有内容(包括<i>text</i>)都捞出来,自然和XML的纯文本对不上
  • <p>(.*)<i这种写法只提取到<i>之前的内容,后面的testing content会被丢掉,当然也匹配失败

内容的提问来源于stack exchange,提问作者la1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:54:08