如何用正则表达式排除PDF/DOC后缀,匹配其他所有URL?
解决方案:匹配排除指定后缀的URL
核心正则表达式
^(?!.*\.(pdf|doc)(?:\?.*)?$).+$
表达式拆解
^:锚定字符串起始位置(?!.*\.(pdf|doc)(?:\?.*)?$):负向预查断言,用来排除符合以下特征的URL:.*:匹配任意长度的前置内容(比如URL的域名、路径部分)\.(pdf|doc):匹配.pdf或.doc后缀(?:\?.*)?:可选的URL查询参数部分(比如?Ver=1230),?:表示非捕获组,不保留匹配结果$:锚定字符串结束位置
.+$:匹配所有不满足上述排除条件的完整URL
匹配效果验证
针对你提供的示例URL:
- 会被匹配的URL(非pdf/doc后缀):
https://www.aaaa.it https://www.fsdfdsf.it https://www.fdsgrgty.com https://www.inth.ie https://www.caghfd.it https://www.inteshg.com https://www.hghhg.it - 会被排除的URL(带pdf后缀,含查询参数):
https://www.dsdgg.it/documents/rr/0/e+I+costi.pdf https://www.rrrrrrrr.it/documents/ee/0/rrr+I+costi.pdf?Ver=1230
扩展方法
如果未来需要排除更多后缀(比如xls、docx、ppt),只需在断言的后缀列表中添加即可:
^(?!.*\.(pdf|doc|xls|docx|ppt)(?:\?.*)?$).+$
内容的提问来源于stack exchange,提问作者ACaps
相关产品推荐
相关产品推荐

