如何用正则表达式匹配指定URL中的name子域名部分?
正则提取URL中的name部分
针对你给出的固定格式URL https://name.secondpart.thirdpart.com,要提取name部分,你之前的正则没考虑到URL开头的https://前缀,所以匹配失败。这里给你两个可行的方案:
方案1:使用环视精准匹配
(?<=https://)([^.]+)(?=\.secondpart\.thirdpart\.com)
(?<=https://):确保匹配内容的前面是https://([^.]+):捕获所有非点号的字符,也就是你要的name(?=\.secondpart\.thirdpart\.com):确保匹配内容的后面是.secondpart.thirdpart.com
如果需要兼容http协议,把正则改成:
(?<=https?://)([^.]+)(?=\.secondpart\.thirdpart\.com)
方案2:匹配完整URL并捕获目标
这种写法更直接,因为你的域名格式固定:
^https?://([^.]+)\.secondpart\.thirdpart\.com$
直接匹配整个URL,第一个捕获组就是name部分,大部分正则工具或语言里都能通过捕获组获取到这个值。
你之前的正则(?<=^|\.)是匹配字符串开头或点号后面,但你的URL开头是https://,既不是字符串开头(字符串开头是h)也不是点号,所以这个环视无法定位到name的正确位置,导致匹配失败。
内容的提问来源于stack exchange,提问作者Kevster1338
相关产品推荐
相关产品推荐

