goo*_*oly 3 regex powershell replace
我正在加载HTML电子邮件,首先我删除了HTML标签,我将每个
空格替换为空格,并将双空格减少一个空格 - 这是有效的.
但是现在我有很多空行,我无法删除.我已经看到了在读取文件时删除空行的示例,但在删除HTML标记和空格之前,我没有任何空行.
我做:
$m = [IO.File]::ReadAllText("$emailFolder\$fName")
$m = $m -replace "<((?!@).)*?>" # removes all html tag but not adr: <John.Doe@Doe.com>
$m = $m -replace " "," "
$m = $m.Replace(' ',' ').Replace(' ',' ').Replace(' ',' ')
$m = $m.Replace('`r','').Replace('`n`n','`n').Replace('`n`n','`n') # does nothing :(
Run Code Online (Sandbox Code Playgroud)
我尝试了各种版本,没有一个删除空行.任何想法,我怎么能做到这一点?
除此之外,我试图使用正则表达式乘数来连续查找空格并失败.
我做错了什么?
$m = $m.Replace(' +',' ') # does not work
$m = $m.Replace('\s+',' ') # does not work either
Run Code Online (Sandbox Code Playgroud)
bri*_*ist 13
如果我理解正确,你不想删除所有换行符,只是删除"空"行(除了空格之外的任何行).
考虑这个示例字符串:
$multiLine = "Line 1`r`nLine 2`nLine 3`r`n`r`n `n `t `r`nLine 7`r`n"
Run Code Online (Sandbox Code Playgroud)
显示时,它将在屏幕上显示如下:
Line 1
Line 2
Line 3
Line 7
Run Code Online (Sandbox Code Playgroud)
第4行实际上是一个空行,只有一个CRLF.第5行是后跟单个LF的空格,第6行是空格,制表符,空格,然后是CRLF.我混合行结尾,因为HTML可能是一团糟; 为任何事做好准备是件好事!
要处理所有这些,你可以像这样做一个替换:
$multiLine -creplace '(?m)^\s*\r?\n',''
Run Code Online (Sandbox Code Playgroud)
-creplace
(只是区分大小写的版本)-replace
(我喜欢明确).(?m)
是一种设置正则表达式模式的内联方法.该m
模式代表多线,并且它可以让^
与$
锚的每个行的开始/结束匹配的字符串(而不是串的开始和结束).我认为这是你问题的关键.^
匹配每行的开头,然后使用\s
包含选项卡的类匹配0或更多的空格.^
会在整个字符串中捕获它们.Line 1
Line 2
Line 3
Line 7
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10059 次 |
最近记录: |