如何使用regex提取URL中/photos/路径下的末尾数字ID
问题说明
现有两类Facebook照片页URL需要提取纯数字照片ID:
- URL1:
https://www.facebook.com/foo123/photos/1234/,预期提取结果1234 - URL2:
https://www.facebook.com/foo123/photos/a.123/1234/,预期提取结果1234
原有正则\/photos\/([^\/\?]+)的逻辑是抓取/photos/后到下一个/或?前的内容,在URL2场景下会错误匹配到非数字的a.123,无法满足需求。
提取规则明确:目标值为纯数字,要么直接跟在/photos/后作为独立路径段(以/结尾),要么在/photos/的下一级路径之后作为独立路径段(以/结尾)。
可用正则
\/photos\/(?:[^\/]+\/)?(\d+)\/
逻辑说明
\/photos\/:精准匹配固定路径标识/photos/(?:[^\/]+\/)?:非捕获可选分组,匹配0或1段/photos/后、目标ID前的非斜杠路径段(对应URL2里的a.123/),同时兼容两种URL结构(\d+):捕获分组,匹配连续纯数字,即需要提取的目标ID- 末尾
\/:约束目标ID必须是独立路径段,以斜杠结尾,避免误匹配其他带数字的非目标片段
两种URL下该正则的第一个捕获组返回值均为预期的1234,符合要求。
内容的提问来源于stack exchange,提问作者CyberPunk
相关产品推荐
相关产品推荐

