【发布时间】:2016-08-04 21:47:41
【问题描述】:
我正在尝试从 PowerShell 中的邮件正文中提取 URL。
我正在使用以下正则表达式:(在 this site 上找到)
$regexURL = "@^(https?|ftp)://[^\s/$.?#].[^\s]*$@iS"
然后我循环进入一个邮件文件夹和每个邮件项:
foreach ($Mail in $subfolder.items) {
$a = [Regex]::Match($Mail.Subject, $regexURL).Groups[1].Value
$b = [Regex]::Match($Mail.Body, $regexURL).Groups[1].Value
}
但即使 Mail.Subject 或 Body 包含有效的 URL,$a 和 $b 仍为空。
恐怕我不明白 Match() 是如何工作的。
感谢您对该问题的任何帮助。 杰罗姆
【问题讨论】:
-
缩进!请在发布前修复它!
-
请发布
$Mail.Subject的示例以及您对$a的期望。 -
@有什么用?似乎是另一种语言的正则表达式。试试$regexURL = '(https?|ftp)://[^\s/$.?#].[^\s]*$'。iS在 PS/.NET AFAIK 中不需要修饰符。 -
例如,$Mail.Subject 可以是“stockoverflow.com”。 $Mail.Body 与最后的空行相同。 '(https?|ftp)://[^\s/$.?#].[^\s]*$' 根本不起作用。暂时只有 "(http[s]?|[s]?ftp[s]?)(:\/\/)([^\s,]+)" 有点(!)工作并给出“http”返回。
标签: regex string powershell match