You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中正则表达式提取URL:解决URL连写匹配问题

解决PowerShell中连写URL的正则提取问题
  • 直接给你能用的修正版正则:

    \b(https?://)(?:(?!https?:\/\/)[\w-./?%&=])+\b
    

    如果要贴合你原来的正则结构调整,也可以用这个:

    (https?)://([\w-]+\.)+[\w-]+(?:/(?!https?:\/\/)[\w- ./?%&=])*
    
  • 问题根源:
    你原来的正则里,路径部分的匹配规则(比如/[\w- ./?%&=]*)没有限制不能碰到下一个URL的开头,所以会把后面https的部分也包含进去,导致第二个URL无法被识别。

  • 核心解决逻辑:
    把**负向预查(?!https?:\/\/)**加到路径部分的字符匹配前面,确保每匹配一个字符时,后面都不会紧跟着新的http://或https://。这样正则就会在遇到下一个URL开头时立刻停止匹配,不会“越界”。

  • PowerShell实际使用示例:
    假设你要从文件里提取URL,用这段代码就行:

    # 读取文件内容
    $fileContent = Get-Content -Path "你的文件路径.txt" -Raw
    # 提取所有符合规则的URL
    $extractedUrls = [regex]::Matches($fileContent, '\b(https?://)(?:(?!https?:\/\/)[\w-./?%&=])+\b') | ForEach-Object { $_.Value }
    # 输出结果
    $extractedUrls
    

内容的提问来源于stack exchange,提问作者Secure Aviator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 09:22:32