批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
[批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
返回列表 发帖

[问题求助] PowerShell删除正则替换多行后留下的空行

下面的代码把下面的几行通过替换的方式删除了, 但是却留下了一个空行, 如何在替换的同时删除空行?
#if A
    part1
    part1
#endif
  1. $s = @'
  2. public static void Main(string[] args)
  3. {
  4. #if A
  5.     part1
  6.     part1
  7. #endif
  8. part
  9. part
  10. }
  11. '@
  12. $s -replace "#if.*(?s).*?#endif"
复制代码

$s -replace "#if[\s\S]*?#endif`n"
$s -replace "#if[\s\S]*?#endif`n`n"  本来的换行去掉的话就再加一个
1

评分人数

TOP

本帖最后由 小白龙 于 2022-11-23 14:01 编辑

回复 2# pd1


   多谢大佬 ,
还有一个问题想请教, 下面的s变量的最后有两个空行, 我想只删除最后那个空行, 留下一个空行, 不想用转成数组的方法, 还有别的简单的方法吗
就是不管最后多少空行, 只删最后一个空行
  1. $s = @'
  2. part1
  3. part2
  4. '@
复制代码

TOP

回复 3# 小白龙


$s -replace "`n(?![`n\S])"
这样试试看

TOP

回复 4# pd1


    大佬666, 能解释一下吗?

TOP

回复 5# 小白龙


   
可以看一下正则表达式。
(?!exp)        匹配后面跟的不是exp的位置
你的这个最后一个换行  就是后面不接换行(`n)也不接非空字符(\S)

https://www.jb51.net/tools/zhengze.html#lookaround
教程可以看看这个

TOP

回复 6# pd1

多谢

TOP

返回列表