我正在努力创建正确的REGEX模式以在网址中间找到用户名字符串。简而言之,我正在使用Powershell并下载一个网页并清除“li”元素。我把它写到一个文件中,所以我有一堆这样的行:
$host
我需要的字符串是“jimmysmith”部分,每行都有不同的用户名,不超过8个字母字符。我目前的模式是:
<LI><A HREF="/grouplist/expand-user/jimmysmith">Smith, Jimmy</A>
我可以在我的代码中使用“-replace $ pattern”来获取“Smith,Jimmy”部分。我不知道自己在做什么,取得我所获得的成功也取得了成功。
在使用了几个在线正则表达式助手之后,我仍然坚持如何只获得“第三个”之后的“字符串”和最多但不包括最后一个引用。
感谢您提供给我的任何帮助。
答案 0 :(得分:4)
我建议您使用HTML解析器。尝试:
$html = New-Object -ComObject "HTMLFile"
$source = '<LI><A HREF="/grouplist/expand-user/jimmysmith">Smith, Jimmy</A> '
$html.IHTMLDocument2_write($source)
$html.links | % nameprop
jimmysmith
答案 1 :(得分:0)
只是简单地替换冗余字符串。
'<LI><A HREF="/grouplist/expand-user/jimmysmith">Smith, Jimmy</A> ' -replace ".*user/|`"\>.*"
如果您有多行,请尝试以下操作:
'<LI><A HREF="/grouplist/expand-user/jimmysmith">Smith, Jimmy</A> ' -replace "^\<LI.*user/|`"\>.*"
两者都有效,经过测试。
答案 2 :(得分:0)
我的问题的答案,包含在塞尔吉奥的回复中。
尝试以下正则表达式:
[^\/"]+(?=">.*<\/A>)
这将捕获<a>
标记的href属性中的最后一个字符串。