Regex 将空白替换为单个空格

Regex 将空白替换为单个空格,regex,powershell,Regex,Powershell,我从JavaScript中的示例开始,并尝试进行相同的性能测试 我有 $string = 'RAM Statistics: 5954 / 8174 743=InUse 746=Peak' $RegEx1 = '/ +/g' $RegEx2 = '/ +/g' $RegEx3 = '/ {2,}/g' $RegEx4 = '/\s\s+/g' $RegEx5 = '/ +(?= )/g' Measure-Command { $newString

我从JavaScript中的示例开始,并尝试进行相同的性能测试

我有

$string = 'RAM Statistics:     5954 /     8174       743=InUse      746=Peak'
$RegEx1 = '/ +/g'
$RegEx2 = '/  +/g'
$RegEx3 = '/ {2,}/g'
$RegEx4 = '/\s\s+/g'
$RegEx5 = '/ +(?= )/g'


Measure-Command {
    $newString = $string -replace $RegEx1, $null
}
Write-Host "$newString"
Measure-Command {
    $newString = $string -replace $RegEx2, $null
}
Write-Host "$newString"
Measure-Command {
    $newString = $string -replace $RegEx3, $null
}
Write-Host "$newString"
Measure-Command {
    $newString = $string -replace $RegEx4, $null
}
Write-Host "$newString"
Measure-Command {
    $newString = $string -replace $RegEx5, $null
}
Write-Host "$newString"
我得到了非常不同的时间,但都没有返回任何东西,这不是很有用。将Javascript正则表达式转换为PowerShell正则表达式会有什么问题?
FWIW,我想保持事情简单,所以只需要空格,不需要也替换CR之类的东西。数据非常简单,格式只是垃圾。

在PowerShell扩展版中,我认为.Net一般来说,您的修饰符/选项应该位于字符串的开头,例如?smi/+之类的构造

将空白替换为单个空格

如果你想要简单的话,那就可以了

考虑一下这个例子,使用正则表达式字符串来显示您要匹配的内容

"this is only a /    /g" -replace '/ +/g', "test"
this is only a test

一对文字前斜杠,至少有一个空格将它们分隔开,后面跟着文字g。

因此,这是有道理的,但问题不会越来越严重。RegEx搞乱了我的脑袋。谢谢现在转到今天的下一个正则表达式问题。
"this is only a /    /g" -replace '/ +/g', "test"
this is only a test