如果 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":"
右边界:",
如果 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":"
右边界:",