regex - 正则表达式:过滤字符串

标签 regex powershell powershell-2.0 exchange-server-2010

对于其他进程,我想将以下行拆分为对象。
该行来自我们的Exchange传入SMTP日志文件。

2014-05-23T08:38:58.869Z,Exchangeserver\External Relay,08D1437A9AEFF27B,5,192.168.100.211:25,192.168.100.211:46964,<,MAIL FROM: <prvs=0220d28471=user@domain.eu>

使用正则表达式可以做到这一点吗?

所需输出:
Time: 08:38:58
Connector: Exchangeserver\External Relay
ExchangeID:08D1437A9AEFF27B
MailFrom:user@domain.eu

对不起,正则表达式对我的大脑来说太重了。
:(

非常感谢!

最佳答案

您只需要使用正则表达式来添加电子邮件。您可以使用-split拆分列:)

$arr = @("2014-05-23T08:38:58.869Z,Exchangeserver\External Relay,08D1437A9AEFF27B,5,192.168.100.211:25,192.168.100.211:46964,<,MAIL FROM: <prvs=0220d28471=user@domain.eu> " -split ",")

$ht = [ordered]@{}
$ht["Time"] = $arr[0]
$ht["Connector"] = $arr[1]
$ht["ExchangeID"] = $arr[2]
$ht["MailFrom"] = $($arr[7] -match "([^=@]+@[^>]+)" | Out-Null; $matches[1])

$ht

然后,您可以格式化哈希表中的结果以获取所需的输出。

关于regex - 正则表达式:过滤字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23828914/

相关文章:

python - 当大写字符前面有小写字符时,如何从字符串末尾删除大写字符?

c# - 带有哈希表/字典参数的 Powershell C# Cmdlet

winforms - 从另一个运行空间向表单添加元素

powershell - 可以将 Write-debug 消息传输到 Log 文件吗?

javascript - 如何仅替换匹配的正则表达式的第一个字符?

Java Regular Expression 的 Pattern 应该编译为静态数据成员还是实例变量?

javascript - RegEx 恰好匹配 4 位数字

python - 从Windows Server 2008中的powershell 3.0脚本获取python版本

c# - 提供 .NET 方法作为委托(delegate)回调

powershell - 我们可以在 Powershell 中显示嵌套对象吗?