如何用正则表达式从特定格式字符串中提取编码URL?
提取跳转URL中的编码链接内容
不需要针对每种格式编写单独的正则表达式,一个通用规则就能覆盖所有场景:
正则表达式
\?url=([^&]+)
规则说明
\?url=:匹配固定起始标识,?需要转义(正则中?是元字符)([^&]+):捕获组,匹配任意非&字符直到遇到第一个未编码的&(跳转URL的参数分隔符)或字符串结尾。因为编码后的URL中如果包含&,会被转译为%26,不会和跳转URL本身的参数分隔符&混淆,所以这个规则能精准提取目标内容。
示例验证
针对你给出的第一个具体示例:
原始URL:
https://xxx##.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.domain.com%2Fsubd%2Fdoc.aspx%2F&data=[more detritus]
使用上述正则匹配后,捕获组提取的内容为:
https%3A%2F%2Fwww.domain.com%2Fsubd%2Fdoc.aspx%2F
完全符合你需要的提取结果,同时这个规则也能适配另外两种格式:
- 对于
https://example.com/link/?url=[encoded URL to extract]%3Fl%3Den-us:提取从?url=到结尾的全部内容,即完整的编码URL - 对于
https://example.com/link/?url=[encoded URL to extract]:同样提取完整的编码URL
内容的提问来源于stack exchange,提问作者user2319146
相关产品推荐
相关产品推荐

