正则表达式:在网址中查找usename

时间:2018-05-04 14:29:36

标签: regex powershell

我正在努力创建正确的REGEX模式以在网址中间找到用户名字符串。简而言之,我正在使用Powershell并下载一个网页并清除“li”元素。我把它写到一个文件中,所以我有一堆这样的行:

$host

我需要的字符串是“jimmysmith”部分,每行都有不同的用户名,不超过8个字母字符。我目前的模式是:

<LI><A HREF="/grouplist/expand-user/jimmysmith">Smith, Jimmy</A>&nbsp;

我可以在我的代码中使用“-replace $ pattern”来获取“Smith,Jimmy”部分。我不知道自己在做什么,取得我所获得的成功也取得了成功。

在使用了几个在线正则表达式助手之后,我仍然坚持如何只获得“第三个”之后的“字符串”和最多但不包括最后一个引用。

感谢您提供给我的任何帮助。

3 个答案:

答案 0 :(得分:4)

我建议您使用HTML解析器。尝试:

$html = New-Object -ComObject "HTMLFile"
$source = '<LI><A HREF="/grouplist/expand-user/jimmysmith">Smith, Jimmy</A>&nbsp;'
$html.IHTMLDocument2_write($source)
$html.links | % nameprop
  

jimmysmith

答案 1 :(得分:0)


只是简单地替换冗余字符串。

'<LI><A HREF="/grouplist/expand-user/jimmysmith">Smith, Jimmy</A>&nbsp;' -replace ".*user/|`"\>.*"

如果您有多行,请尝试以下操作:

'<LI><A HREF="/grouplist/expand-user/jimmysmith">Smith, Jimmy</A>&nbsp;' -replace "^\<LI.*user/|`"\>.*"

两者都有效,经过测试。

答案 2 :(得分:0)

我的问题的答案,包含在塞尔吉奥的回复中。

尝试以下正则表达式:

[^\/"]+(?=">.*<\/A>)

这将捕获<a>标记的href属性中的最后一个字符串。