Regex PowerShell-正则表达式将匹配结果放入变量
我是新加入Regex的,所以不要太苛刻,这是我的电子邮件正文:Regex PowerShell-正则表达式将匹配结果放入变量,regex,powershell,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 ... 我使用VBA宏将电子邮件导出到CSV文件中,然后将数据导入PowerShell,并尝试将正文与下面的RedEx代
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
...
我使用VBA宏将电子邮件导出到CSV文件中,然后将数据导入PowerShell,并尝试将正文与下面的RedEx代码匹配。我只需要匹配这一行-
接口ATM0/0/0现在匹配UD
,并将结果放入变量-AlertName,但问题是这一行并不适用于每封电子邮件。此行中始终相同的部分是接口[space]
和[space],现在[space]与[space]
匹配
到目前为止,我得到的是:
If($_ -match "(?<AlertName>[INTERFACE\s\w -/\sNOW\sMATCHES\s\w \r?\n]]+?)")
If($\u-match“(?[INTERFACE\s\w-/\sNOW\sMATCHES\s\w\r?\n]]]+?)
或
If($\匹配)(?[INTERFACE\s.*\r?\n]+?)
但它不起作用
你能帮帮我吗
提前谢谢 不是很清楚你在做什么,但是下面的一些内容会有所帮助
if($\匹配“(接口。*现在\s+匹配。*)”){
$alertName=$matches[1]
}
特殊变量
$matches
将包含有关匹配的信息,$matches[1]
将包含第一个组捕获-即括号(…)
PowerShell将-match
运算符中的匹配存储在$matches[]
哈希表中
如果您需要更多功能,还可以直接使用.NET中的
[Regex]
类(又名,)。您从哪里获得电子邮件正文?它是一根绳子吗?它在档案里吗?您是否直接将其保存到变量中?我正在使用VBA宏将电子邮件导出到CSV文件中,然后将数据导入PowerShell,并尝试将所需的正文与上面的重新定义(匹配的)命名捕获组((?…)
,在asker的示例中)匹配,可以通过其名称作为$matches
(某种)属性进行访问,例如,$matches.AlertName
。
If($_ -match "(?<AlertName>[INTERFACE\s.*\r?\n]+?)")