【问题标题】:PowerShell and RegEx: match whole line except space and empty linesPowerShell 和 RegEx:匹配整行,除了空格和空行
【发布时间】:2015-02-20 07:45:34
【问题描述】:

我对 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
}

【问题讨论】:

  • 你还想用前导/尾随空格匹配行吗?

标签: regex powershell


【解决方案1】:

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

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

演示here.

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

【讨论】:

  • 好的,谢谢。否定的东西对我来说是新的。谢谢
【解决方案2】:

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

$inputText | % { if ($_) { $_.Trim() } } | Out-String

【讨论】:

  • 这也是个好主意。但是当我尝试学习正则表达式时,我更喜欢尽可能多地使用正则表达式:-)
猜你喜欢
  • 1970-01-01
  • 2012-09-04
  • 2012-03-21
  • 1970-01-01
  • 2014-06-03
  • 2011-11-03
  • 1970-01-01
  • 1970-01-01
  • 2020-04-11
相关资源
最近更新 更多