我是 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)
但它不起作用!
请你帮助我好吗?
提前致谢!
不太清楚你在做什么,但以下内容会有所帮助
if($_ -match "(INTERFACE.*NOW\s+MATCHES.*)") {
$alertName = $matches[1]
}
Run Code Online (Sandbox Code Playgroud)
特殊变量$matches将包含有关匹配的信息,$matches[1]并将包含第一个组捕获 - 即括号之间匹配的内容(...)
| 归档时间: |
|
| 查看次数: |
6596 次 |
| 最近记录: |