2017-03-31 128 views
0

我從JavaScript中的this示例開始,並嘗試執行相同的性能測試。用單個空格替換空白

$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等。數據非常簡單,格式只是垃圾。

回答

1

在PowerShell中(通過擴展名,我認爲.Net一般而言)您的修飾符/選項應該位於像(?smi)/ +這樣的構造中的字符串的開頭。

用一個空格

$newString = $string -replace "\s+", " " 

,如果你想簡單應該這樣做就好了更換空白。

考慮這個例子使用你的正則表達式字符串來顯示你想要匹配的東西。

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

一對文字正斜槓,至少有一個空格分隔它們,後面跟着文字g。

+0

因此,看到它是有道理的,但增長的問題不會發生。 RegEx與我的頭腦混亂。謝謝!現在到當天的下一個RegEx問題。 – Gordon

相關問題