$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
这将返回null。
最终,我想要从<string>
到</string>
的整行。
但显然我不知道如何在powershell中表达这一点。
答案 0 :(得分:1)
在您的初始示例中:
<string>[\s]*.mdb[\s]*
第一个[\ s] *与任何东西都不匹配。您可能打算:
<string>[\S]*.mdb[\s]*
但是,我认为属性Matches
将从头到尾接收整个字符串,这意味着您必须放置所有内容,并且需要转义点,因为您可以将其称为通配符:
<string>[\S]*\.mdb[\s]*<\/string>
而且我认为你可以删除一些不需要的部分(我对powershell的正则表达式并不太熟悉,但我还没有看到你必须在{(1}}中放置方括号内的字符类):< / p>
\S
小解释:
<string>\S*\.mdb<\/string>
与空格字符匹配,通常也会匹配换行符或标签(分别为\s
和\n
)。
\t
将匹配\S
不匹配的所有内容。