我正在编辑一些网络日志文件,我想删除某些字段中的双引号,但不是全部。
例如,在以下行中,我想从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
我做错了什么?
答案 0 :(得分:0)
添加括号并使用(?i)
表示不区分大小写:
[regex]::replace( $_, "(?i)`"([a-z]*\.domain\.com)`"", '$1' )
或者,您可以使用-replace
,因为默认情况下不区分大小写
$_ -replace "`"([a-z]*\.domain\.com)`"", '$1'