2013-02-19 72 views
0

我正在編輯一些網絡日誌文件,並且想從某些域中刪除雙引號,但不是全部。正則表達式用Powershell替換引號

例如,在下面一行中,我想從IP地址和server.domain.com中刪除雙引號,但留下剩餘的部分。

2013-02-18 21:47:46.636 POST /Path/page.html - - "173.194.79.106" "Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.296)" - "server.domain.com" 200 1079 15 

我循環通過文件加載與Foreach-Object

每一行,我可以得到線周圍沒有IP地址的報價與此:

[regex]::replace($_,"`"(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})`"", '$1') 

所以我嘗試使用以下做到這一點與server.domain.com項目一樣:

[regex]::replace($_,"`"[a-zA-Z]*\.[dD][oO][mM][aA][iI][nN]\.[cC][oO][mM]`"",'$1') 

和我的結果是這樣的:

2013-02-18 21:47:46.636 POST /Path/page.html - - "173.194.79.106" "Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.296)" - $1 200 1079 15 

我做錯了什麼?

+2

你忘了括號()中的第二個正則表達式我認爲 – user15 2013-02-19 20:15:45

+0

就是這樣!就在我眼前,我錯過了它!感謝您成爲探空板!它應該是:「[regex] :: replace($ _,」'「([a-zA-Z] * \。[dD] [oO] [mM] [aA] [iI] [nN] \。 [cC] [oO] [mM])'「」,'$ 1')「 – user2088608 2013-02-19 20:41:06

+0

如果您解決了問題,並且可以將其添加爲答案並將其標記爲已接受。 – 2013-02-19 20:54:14

回答

0

加括號和不區分大小寫使用(?i)

[regex]::replace($_, "(?i)`"([a-z]*\.domain\.com)`"", '‌​$1') 

或者,你可以使用-replace,因爲這是在默認情況下不區分大小寫

$_ -replace "`"([a-z]*\.domain\.com)`"", '$1'