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

在PowerShell 6.1 Core中匹配URL中用户名的正则表达式问题

提取URL中的用户名解决方案(PowerShell 6.1 Core on Mac OSX)

嘿,我来帮你搞定这个正则提取的问题!针对你给出的行格式,咱们可以用精准的正则配合PowerShell的命令轻松拿到用户名。

思路分析

你的目标行结构是:<LI><A HREF="/grouplist/expand-user/jimmysmith">Smith, Jimmy</A>&nbsp;,用户名是HREF属性里最后一个斜杠/之后、双引号"之前的部分。我们只需要用正则捕获这一段内容就行。

具体实现

1. 精准匹配固定前缀的正则

因为你的HREF前缀是固定的/grouplist/expand-user/,所以用这个正则最稳妥,不会误匹配其他内容:

/grouplist/expand-user/([^"]+)
  • ([^"]+)是核心捕获组:[^"]表示匹配不是双引号的任意字符,+表示匹配1次或多次,刚好能把用户名完整抓出来。

2. PowerShell执行命令

假设你的文件名为user_list.txt,可以用下面两种方式提取:

方式一:用Get-Content配合-match
Get-Content ./user_list.txt | ForEach-Object {
    # 对每行进行正则匹配
    if ($_ -match '/grouplist/expand-user/([^"]+)') {
        # $matches[1]就是捕获到的用户名
        $matches[1]
    }
}
方式二:用Select-String批量匹配
Select-String -Path ./user_list.txt -Pattern '/grouplist/expand-user/([^"]+)' | ForEach-Object {
    # 从匹配结果中提取捕获组的内容
    $_.Matches.Groups[1].Value
}

通用场景扩展

如果以后HREF的前缀可能变化,但用户名始终在最后一个斜杠到引号之间,你可以用更通用的正则:

HREF=".*?/([^"]+)"
  • .*?是非贪婪匹配任意字符,确保找到的是最后一个斜杠后面的内容。

小提示

  • PowerShell默认正则不区分大小写,如果需要严格区分,把-match换成-cmatch即可。
  • 执行完命令后,你可以用Out-File把结果写入新文件,比如在命令末尾加| Out-File ./extracted_usernames.txt。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:09:16