Regex 从表中获取特定值

Regex 从表中获取特定值,regex,powershell,Regex,Powershell,我有一个从.msg文件中获取电子邮件地址的脚本,我已经获得了大部分脚本,以我想要的方式工作 所以对于这个字符串: (Select-String -InputObject $SEMFINAL -Pattern '\w+@\w+\.\w+' -AllMatches).Matches 我得到: 索引:0 长度:15 价值:email@email.com 如何过滤结果以仅获取表中值的数据?我最近刚刚了解了对象和哈希表,我认为这就是这里发生的事情。您需要创建一个具有要指定给它的值的对象。否则,它将只提

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

所以对于这个字符串:

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

索引:0
长度:15
价值:email@email.com

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

我最近刚刚了解了对象和哈希表,我认为这就是这里发生的事情。您需要创建一个具有要指定给它的值的对象。否则,它将只提供值的长度

比如:

 $EmailInput = (Select-String -InputObject $SEMFINAL -Pattern '\w+@\w+\.\w+' -AllMatches).Matches
 $Email = @{
            "Email" = $EmailInput
        }
        $EmailObject = New-Object -TypeName psobject -Property $Email
我还在学习,所以你可能需要把它弄乱一点(或很多),但我认为如果你想读取实际值而不仅仅是长度,你需要把这些信息放到一个对象中


如果其他人更了解对象,请纠正我。

我最近刚刚了解了对象和哈希表,我想这就是这里发生的事情。您需要创建一个具有要指定给它的值的对象。否则,它将只提供值的长度

比如:

 $EmailInput = (Select-String -InputObject $SEMFINAL -Pattern '\w+@\w+\.\w+' -AllMatches).Matches
 $Email = @{
            "Email" = $EmailInput
        }
        $EmailObject = New-Object -TypeName psobject -Property $Email
我还在学习,所以你可能需要把它弄乱一点(或很多),但我认为如果你想读取实际值而不仅仅是长度,你需要把这些信息放到一个对象中


如果其他人更了解对象,请纠正我。

我最近刚刚了解了对象和哈希表,我想这就是这里发生的事情。您需要创建一个具有要指定给它的值的对象。否则,它将只提供值的长度

比如:

 $EmailInput = (Select-String -InputObject $SEMFINAL -Pattern '\w+@\w+\.\w+' -AllMatches).Matches
 $Email = @{
            "Email" = $EmailInput
        }
        $EmailObject = New-Object -TypeName psobject -Property $Email
我还在学习,所以你可能需要把它弄乱一点(或很多),但我认为如果你想读取实际值而不仅仅是长度,你需要把这些信息放到一个对象中


如果其他人更了解对象,请纠正我。

我最近刚刚了解了对象和哈希表,我想这就是这里发生的事情。您需要创建一个具有要指定给它的值的对象。否则,它将只提供值的长度

比如:

 $EmailInput = (Select-String -InputObject $SEMFINAL -Pattern '\w+@\w+\.\w+' -AllMatches).Matches
 $Email = @{
            "Email" = $EmailInput
        }
        $EmailObject = New-Object -TypeName psobject -Property $Email
我还在学习,所以你可能需要把它弄乱一点(或很多),但我认为如果你想读取实际值而不仅仅是长度,你需要把这些信息放到一个对象中


如果其他人更了解对象,请纠正我。

这可能不是最优雅的解决方案,但这行得通吗?:

$SEMFINAL=“你好,我的地址是bob@example.com谢谢。另外,你也可以通过robert@example.com" 
(选择String-InputObject$SEMFINAL-Pattern'\w+@\w+\.\w+'-AllMatches)。匹配项选择值
输出(
Value
匹配对象的属性):

值
-----
bob@example.com
robert@example.com
要将属性展开为其实际值,请将最后一部分更改为

|选择-展开值
到最后

(选择String-InputObject$SEMFINAL-Pattern'\w+@\w+\.\w+'-AllMatches)。匹配|选择-扩展值
输出:

bob@example.com
Robert@example.com

这可能不是最优雅的解决方案,但这行得通吗

$SEMFINAL=“你好,我的地址是bob@example.com谢谢。另外,你也可以通过robert@example.com" 
(选择String-InputObject$SEMFINAL-Pattern'\w+@\w+\.\w+'-AllMatches)。匹配项选择值
输出(
Value
匹配对象的属性):

值
-----
bob@example.com
robert@example.com
要将属性展开为其实际值,请将最后一部分更改为

|选择-展开值
到最后

(选择String-InputObject$SEMFINAL-Pattern'\w+@\w+\.\w+'-AllMatches)。匹配|选择-扩展值
输出:

bob@example.com
Robert@example.com

这可能不是最优雅的解决方案,但这行得通吗

$SEMFINAL=“你好,我的地址是bob@example.com谢谢。另外,你也可以通过robert@example.com" 
(选择String-InputObject$SEMFINAL-Pattern'\w+@\w+\.\w+'-AllMatches)。匹配项选择值
输出(
Value
匹配对象的属性):

值
-----
bob@example.com
robert@example.com
要将属性展开为其实际值,请将最后一部分更改为

|选择-展开值
到最后

(选择String-InputObject$SEMFINAL-Pattern'\w+@\w+\.\w+'-AllMatches)。匹配|选择-扩展值
输出:

bob@example.com
Robert@example.com

这可能不是最优雅的解决方案,但这行得通吗

$SEMFINAL=“你好,我的地址是bob@example.com谢谢。另外,你也可以通过robert@example.com" 
(选择String-InputObject$SEMFINAL-Pattern'\w+@\w+\.\w+'-AllMatches)。匹配项选择值
输出(
Value
匹配对象的属性):

值
-----
bob@example.com
robert@example.com
要将属性展开为其实际值,请将最后一部分更改为

|选择-展开值
到最后

(选择String-InputObject$SEMFINAL-Pattern'\w+@\w+\.\w+'-AllMatches)。匹配|选择-扩展值
输出:

bob@example.com
Robert@example.com

我想这是我最接近它的地方。理想情况下,如果您可以删除该值,并且-----这只是Powershell格式化对象。如何:将“|foreach{${.value}”添加到末尾第一部分中的“添加”是什么使用
选择-扩展值
仅获取值,而不是仅具有
属性的对象。如果OP至少具有PowerShell 3.0,那么您应该能够
(选择字符串-…-所有匹配项).matches.value
我想这是最接近它的。理想情况下,如果您可以删除