找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 15860|回复: 6

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

[复制链接]
发表于 2022-11-23 10:31:41 | 显示全部楼层 |阅读模式
下面的代码把下面的几行通过替换的方式删除了, 但是却留下了一个空行, 如何在替换的同时删除空行?
#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"
复制代码
发表于 2022-11-23 13:04:57 | 显示全部楼层
$s -replace "#if[\s\S]*?#endif`n"
$s -replace "#if[\s\S]*?#endif`n`n"  本来的换行去掉的话就再加一个

评分

参与人数 1技术 +1 收起 理由
小白龙 + 1 乐于助人

查看全部评分

 楼主| 发表于 2022-11-23 13:44:57 | 显示全部楼层
本帖最后由 小白龙 于 2022-11-23 14:01 编辑

回复 2# pd1


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


  4. '@
复制代码
发表于 2022-11-23 14:42:26 | 显示全部楼层
回复 3# 小白龙


$s -replace "`n(?![`n\S])"
这样试试看
 楼主| 发表于 2022-11-23 15:45:25 | 显示全部楼层
回复 4# pd1


    大佬666, 能解释一下吗?
发表于 2022-11-23 17:16:10 | 显示全部楼层
回复 5# 小白龙


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

https://www.jb51.net/tools/zhengze.html#lookaround
教程可以看看这个
 楼主| 发表于 2022-11-23 19:10:24 | 显示全部楼层
回复 6# pd1

多谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 00:54 , Processed in 0.019533 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表