Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex PowerShell-正则表达式将匹配结果放入变量_Regex_Powershell - Fatal编程技术网

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

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代

我是新加入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代码匹配。我只需要匹配这一行-
接口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]+?)")