从某个字符串旁边的文本文件中提取url



我有一个大的文本文件,其中包含如下内容:

View this email in your browser (https://us15.campaign-archive.com/?e=3D1460&u=3Df6e2bb1612577510b&id=3D2c8be)

有时,URL的一部分会转到下一行。

我只需要使用PowerShell提取该URL,不需要括号(圆括号),这样我就可以将其作为HTML文件下载。

我已经尝试过批量执行此操作,这是我最熟悉的,但事实证明这是不可能的,似乎这在PowerShell中是可能的。

下面使用基于正则表达式的操作符和。net api。

在这两个解决方案中,-replace 'r?n'使用-replace操作符(r?n是一个正则表达式,匹配windows格式的CRLF和unix格式的仅限lf的换行符)从找到的URL中删除任何嵌入的换行符(换行符)。

  • 如果您只需要一个第一个URL,请使用-match操作符,如果返回$true,则报告自动$Matches变量变量中匹配的内容。
# Sample multi-line input string.
# To read such a string from a file, use, e.g.:
#     $str = Get-Content -Raw file.txt
$str = @'
Initial text.
View this email in your browser (https://us15.campaign-archive.com/?e=3D1460&u=3Df6e2b
b1612577510b&id=3D2c8be)
More text.
'@
# Find the (first) embedded URL...
if ($str -match '(?<=()https?://[^)]+') {
# ... remove any line breaks from it, and output the result.
$Matches.0 -replace 'r?n'
}
  • 如果您需要所有(或固定计数)的匹配,则需要直接使用System.Text.RegularExpressions.Regex.Matches.NET API:
# Extract *all* URLs and remove any embedded line breaks from each
[regex]::Matches(
$str, 
'(?<=()https?://[^)]+'
).Value -replace 'r?n'

有关第一个正则表达式的解释和使用它的能力,请参阅regex101.com页面。

相关内容

  • 没有找到相关文章

最新更新