PowerShell和RegEx:匹配整行,空格和空行除外

时间:2015-02-19 19:58:27

标签: regex powershell

我对RegEx的理解仍然存在问题。

我在Powershell中有一个文本框,它应该接收几个域的组。 像:

G-ITDep-Location-RWXD
G-R-ITHR-666-42-All-RWXD

G-R-ITHR-666-42-All-EndUsers
 SP-P-TKDep-ISIS-Member 
Domain Users

通过输入,我想通过Get-ADGroupMember获取每个组的组成员。但是,凭借我目前的正则表达式,我只能捕获每一行。 虽然这对我自己是好的,但我必须考虑我的大学和可能的错误。在上面的例子中,在另一行的开头和结尾有一个空行和一个“空格”。 那么如何过滤掉空行和前导/结尾空白字符?

这就是我所拥有的:

$Groups = [regex]::Matches($textboxUseradminInput.Text, '(?mi)^(.*)$')
foreach ($do in $Groups)
            {
                $richtextboxgetGroupsGrpMembers.Text += "$do" + ":`n"
                $richtextboxgetGroupsGrpMembers.Text += Get-ADGroupMember -Identity "$do" -Server "192.168.3.99" |`
                foreach { $_.Name } | Out-String
}

2 个答案:

答案 0 :(得分:1)

如果要在正则表达式后清理它,可以使用where :: if子句过滤掉空行并使用String :: Trim()

去除空格。
$inputText | % { if ($_) { $_.Trim() } } | Out-String

答案 1 :(得分:1)

此正则表达式将过滤掉任何尾随或起始空格。

 ([^\s].+[^\s])

demo here

确保您的正则表达式可以处理多行。