0
$lines = '<string>D:\home\bob\utility.mdb</string>'

[String[]]$varr = $lines | Select-String -AllMatches -Pattern "<string>*.mdb" |
Select-Object -ExpandProperty Matches |
Select-Object -ExpandProperty Value

这是返回空值。

最终我想要整条线,从<string></string>.

但显然我不知道如何在 powershell 中表达这一点。

4

1 回答 1

1

在您最初的示例中:

<string>[\s]*.mdb[\s]*

第一个 [\s]* 将不匹配任何内容。您可能打算:

<string>[\S]*.mdb[\s]*

但是,我认为该属性Matches将从头到尾接收整个字符串,这意味着您必须放置所有内容,并且点需要转义,因为您可以将其称为通配符:

<string>[\S]*\.mdb[\s]*<\/string>

而且我认为您可以删除一些不需要的部分(我对powershell的正则表达式不太熟悉,但我还没有看到任何必须将字符类\S放在方括号内的地方):

<string>\S*\.mdb<\/string>

小解释:

  • \s匹配空格字符,通常还匹配换行符或制表符(\n\t分别)。

  • \S将匹配所有\s不匹配的内容。

于 2013-07-10T15:55:03.997 回答