【发布时间】:2015-05-16 11:53:28
【问题描述】:
我将碎片整理分析的输出存储在一个变量中,然后我尝试匹配一个模式来检索一个数字。
在 this following online regex tester 中,它工作正常,但在 powershell 中,String -match $pattern 返回 false。
我的代码:
$result = Defrag C: /A /V | Out-String
echo $result
$pattern = "fragmenté[^.0-9]*([0-9]+)%"
$result -match $pattern
我做错了什么?
【问题讨论】:
-
怀疑您可能正在处理换行问题...可能会检查诸如将结果管道传输到文件,然后在文件上使用 Get-Content,然后使用 Out-String 来清除中断。不确定我头顶的语法,对不起:)
-
我只是按照你说的做了,还是不行。我还尝试强制转换为字符串而不是使用
Out-String来删除每个换行符,它也不起作用。 -
好的,PowerShell 正则表达式还有一个显式的多行修饰符..类似于 [regex]::matches($str, "fragmente[^.0-9]*([0-9] +)%", "MultiLine")..再次抱歉语法粗糙,暂时无法测试
-
我必须为我将字符串转换为英文,但它工作得很好。我不确定,但想知道口音是否是问题所在。
-
您确定
$result包含运行时您期望的文本吗?你是从提升的控制台运行它吗?
标签: regex powershell