我正在使用 RegEx 来断言 API 调用的响应,但它目前有点过于“贪婪”并且最终匹配各种响应。需要 RegEx 位,因为响应中的实际 ID 每次都会不同。
RegEx 断言是这样的:
{data:\[{"name":"Mat","~id":"(.*)"},{"name":"Laurie","~id":"(.*)"}\]},"something":true}
与此正确响应相匹配:
{data:[{"name":"Mat","~id":"4fd5ec146fc2ee0fff234234"},{"name":"Laurie","~id":"4fd5ec146fc2ee0fff234227"}]},"something":true}
以及这个不正确的回应:
{data:[{"name":"Mat","~id":"4fd5ec146fc2ee0fff234234"},{"name":"Laurie","~id":"4fd5ec146fc2ee0fff234227"},{"name":"John","~id":"4fd5ec146fc2ee0fff234237"},{"name":"Paul","~id":"4fd5ec146fc2ee0fff234238"},{"name":"George","~id":"4fd5ec146fc2ee0fff234239"}]},"something":true}
第二个(.*)
不仅匹配第二个项目的 ID,而且匹配 ID和所有其他不需要的对象。
~id
所以我想我需要让我的 RegEx 在字段方面更加严格。由于 ID 始终是 24 个十六进制字符,我想(.*)
用更合适的东西替换。
- 我在Go中写这个,因此使用 Go 的RegExp包。
- 我正在使用http://regexpal.com/来测试 RegEx