PowerShell 和 RegEx:匹配除 space 和空行之外的整行

PowerShell and RegEx: match whole line except space and empty lines

我对 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 获取每个组的组成员。但是,使用我当前的正则表达式,我只能捕获每一行。 虽然这对我自己来说没问题,但我必须考虑我的大学和可能出现的错误。在我上面的示例中,有一个空行和一个 "space" 在另一行的开头和结尾。 那么如何过滤掉空行和 leading/ending 空白字符呢?

这是我的:

$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
}

如果你想清理它 post-regex,你可以使用 where 或 if 子句过滤掉空行,并使用 String::Trim()

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

此正则表达式将过滤掉任何尾随或开始的白色 space。

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

演示 here.

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