从表中获取特定值

时间:2015-08-18 15:16:32

标签: regex powershell

我有一个脚本从.msg文件中获取电子邮件地址,我已经让大部分脚本按照我想要的方式工作。

所以对于这个字符串:

(Select-String -InputObject $SEMFINAL -Pattern '\w+@\w+\.\w+' -AllMatches).Matches

我明白了:

Index    : 0
Length   : 15
Value    : email@email.com

如何过滤结果以仅获取表格中值的数据?

2 个答案:

答案 0 :(得分:3)

这可能不是最优雅的解决方案,但这会有效吗?:

$SEMFINAL = "Hello my address is bob@example.com Thanks. P.S. You can also reach me at robert@example.com" 
(Select-String -InputObject $SEMFINAL -Pattern '\w+@\w+\.\w+' -AllMatches).matches | select value

输出(匹配对象的Value属性):

Value
-----
bob@example.com
robert@example.com

要将属性扩展为实际值,请将最后一部分更改为

| select -Expand value

到最后。

(Select-String -InputObject $SEMFINAL -Pattern '\w+@\w+\.\w+' -AllMatches).matches | select -Expand value

输出:

bob@example.com
Robert@example.com

答案 1 :(得分:0)

我刚刚了解了对象和哈希表,我认为这是在这里发生的事情。您需要使用要为其分配的值创建对象。否则它只会给你这些值的长度。

类似于:

 $EmailInput = (Select-String -InputObject $SEMFINAL -Pattern '\w+@\w+\.\w+' -AllMatches).Matches
 $Email = @{
            "Email" = $EmailInput
        }
        $EmailObject = New-Object -TypeName psobject -Property $Email

我还在学习,所以你可能需要稍微(或很多)搞砸它,但我认为你需要把这些信息放到一个对象中,如果你想读取实际值而不是长度。

如果其他人更了解物品,请纠正我。