使用正则表达式提取JSON中所有display_url字段的URL值
正则提取display_url字段URL方案
可用正则表达式
针对给出的文本结构,直接使用下面的正则即可精准提取目标值,不会误匹配src等其他字段的链接:
"display_url"\s*=\s*"([^"]+)";
匹配逻辑说明
- 开头严格匹配
"display_url"字段名,从根源上避免匹配其他同格式的非目标字段 \s*用来兼容字段名、等号、URL值之间的任意缩进、空格、换行,适配格式化后的带缩进文本场景- 捕获组
([^"]+)会提取双引号内的全部内容,因为URL本身不会出现未转义的双引号,这个逻辑可以完整覆盖带多参数的长链接,不会出现截断问题 - 结尾匹配
";,确保匹配的是完整的字段行,不会抓到半截结构
样例匹配结果
对提供的测试文本执行匹配后,捕获组返回的URL结果为:
https://bytesong.fdel3-2.fna.fbcdn.net/v/t51.2885-15/290026768_727463948376235_3554188366257815869_n.jpg?stp=dst-jpg_e35_s1080x1080&_nc_ht=instagram.fdel3-2.fna.fbcdn.net&_nc_cat=107&_nc_ohc=uRmgxvUK4o8AX8Yw3TG&edm=AABBvjUBAAAA&ccb=7-5&oh=00_AT903HYu4JZXRI5RCKNXCnChAcZ1YmpbpjLIF-qnUJV_zw&oe=62BF9468&_nc_sid=83d603
特殊场景适配
如果文本中URL内部存在转义双引号(格式为\"),可以使用兼容转义字符的版本:
"display_url"\s*=\s*"((?:[^"\\]|\\.)+)";
使用时开启全局匹配模式,即可一次性提取整段文本中所有display_url对应的URL值,无需逐行处理。
内容的提问来源于stack exchange,提问作者Deepak Gautam
相关产品推荐
相关产品推荐

