如果 json 响应值包含特殊字符,则正则表达式不起作用。如何从下面提到的 json 中提取 'sid' 值

Regular expression is not working if json response value contain special character . how to extract the 'sid' value from below mention json

如果 json 响应值包含特殊字符,则正则表达式不起作用。如何从下面提到的 json 中提取 'sid' 值作为 ""sid"?\s*:?\s*"(\w+)"" 是无法正常工作,因为 json 响应在 sid 上包含特殊字符。

0{"sid":"RhANkc9V7-psbnzmJAAGS","upgrades":["websocket"],"pingTimeout":20000,"pingInterval":25000}

您的匹配组目前只能捕获一个或多个单词字符,为了捕获特殊字符和单词字符,您必须像下面这样调整您的正则表达式,

sid":"(.+?)"

在上面的正则表达式中,.匹配任何字符(行终止符除外),而 \w 仅捕获单词字符,即 a-z、A-Z、0-9、_

你的\w+meta character匹配“单词”字符(字母数字和下划线,也可以写成[a-zA-Z0-9_]字符class)

破折号 - 不会被捕获,因此您要么需要使用通配符而不是“单词”,例如:

sid"?\s*:?\s*"(.*)"

演示:

另一种可能的选择是使用 JSR223 Post-Processor and the following Groovy 代码删除此起始 0

prev.setResponseData(prev.getResponseDataAsString().substring(1),'UTF-8')

完成后您就可以使用JSON Extractor or JSON JMESPath Extractor

如果你不想搞乱正则表达式的复杂性,你也可以使用边界提取器。

左边界:sid":"

右边界:",