PowerShell - 正则表达式将匹配结果放入变量中

Den*_*ans 2 regex powershell

我是 Regex 的新手,所以不要硬判断,这是我的电子邮件正文:

INTERFACE ATM0/0/0 NOW MATCHES UD

Notification Type: INT-PHYSICAL

Host: Bla Bla 
Address: xxx.xx.xxx.xx
State: UP
Date/Time: Thu Dec 11 21:07:05 GMT 2014

...
Run Code Online (Sandbox Code Playgroud)

我正在使用 VBA 宏将电子邮件导出为 CSV 文件,然后将数据导入 PowerShell 并尝试将正文与下面的 RedEx 代码相匹配。我只需要匹配这一行 -INTERFACE ATM0/0/0 NOW MATCHES UD并将结果放入一个变量 - AlertName 中,但问题是每封电子邮件的这一行都不相同。该行中始终相同的部分是INTERFACE[space][space]NOW[space]MATCHES[space]

这是我到目前为止所得到的:

If($_ -match "(?<AlertName>[INTERFACE\s\w -/\sNOW\sMATCHES\s\w \r?\n]]+?)") 
Run Code Online (Sandbox Code Playgroud)

或者

If($_ -match "(?<AlertName>[INTERFACE\s.*\r?\n]+?)")  
Run Code Online (Sandbox Code Playgroud)

但它不起作用!

请你帮助我好吗?

提前致谢!

arc*_*444 5

不太清楚你在做什么,但以下内容会有所帮助

if($_ -match "(INTERFACE.*NOW\s+MATCHES.*)") {
  $alertName = $matches[1]
}
Run Code Online (Sandbox Code Playgroud)

特殊变量$matches将包含有关匹配的信息,$matches[1]并将包含第一个组捕获 - 即括号之间匹配的内容(...)