正则表达式捕获URL

时间:2016-11-09 13:22:46

标签: regex powershell

我已经从这个字符串形式的网站中提取了一个URL:

@{href=http://download.company.net/file.exe}[0]

我无法弄清楚模式如何从中获取此部分:http://download.company.net/file.exe因此我可以将其用作下载文件的URL。

从我的观点来看,逻辑是,我需要首先匹配" http"作为字符串的开头,中间的通配符然后匹配"}",但不包括在最终输出中。所以IDK ...... [http]*\}(我知道这"语法"我的完全错了,但你明白了)

原因我不想包含" exe" to pattern,是文件扩展名是" msi"我希望它更具普遍性。另外一些优秀而全面的PS正则表达式文章会对我有很大的帮助(缺乏经验) - 我真的没有找到任何"新手友好"或者足够全面地理解这个主题。

2 个答案:

答案 0 :(得分:1)

您可以使用[regex]::match-replace

在以下示例中,我捕获href=之后的所有内容,它不是起始大括号}

'@{href=http://download.company.net/file.exe}[0]' -replace '@{href=([^}]+).*', '$1'

<强>输出:

http://download.company.net/file.exe

答案 1 :(得分:1)

我使用-cmatch-imatch作为

if ($content -imatch '(?<=href=).*(?=})') {
    $result = $matches[0]
} else {
    $result = ''
}

如果是测试数据,它将返回

http://download.company.net/file.exe