2015-06-07 73 views
1

我有一個非常類似Multiline Regex in PowerShell的問題,但我似乎無法讓我的表達式工作。很像我需要通過文件解析的其他問題並替換我想要的東西。我的問題是我在尋找的東西是不是一個固定的字符串,但像這樣的多行日誌條目:Powershell正則表達式多行查找和替換

$log_number 
$entry 
$tag 

我需要更換與一個新的字符串選定的標籤中的每個條目。到目前爲止,我有

(Get-Content $($parent_dir + $old_name + ".log")) | 
    Out-String | 
    ForEach-Object {$_ -replace "", "This is a test"} | 
    Set-Content $($parent_dir + $new_name + ".log") 

但我似乎無法找到一個匹配我所尋找的格式的正則表達式查詢。我試圖修改一個,我在這個問題上找到:Multiline regex to match config block

'(?smi)([0-9]{1, }(\s*$)){2}.*?S0B0L' 

但似乎並不奏效。我完全難住,任何幫助將不勝感激!

例子:

39983 
"set x 1" 
random_user 

39984 
"set x 45" 
S0B0L 

39985 
"set x 23" 
random_user 

變爲:

39983 
"set x 1" 
random_user 

This is a test 

39985 
"set x 23" 
random_user 

回答

1

我幾乎可以肯定,問題是你的正則表達式是正在尋找只是數字和空格2倍,那麼任何字符,包括換行,並然後S0B0L。其中

,將文本其中由數字的第一行的3行條匹配正則表達式,而第三行是S0B0L

(?i)[0-9]+[\r\n]+.*[\r\n]+S0B0L 

demo見。

+0

謝謝!此外,該演示網站是太棒了。 – S0B0L