powershell - 用于删除脚本中的块注释的 Powershell 脚本
问题描述
我在删除看起来像这样的评论块时遇到了一些麻烦:
//JR-0001-//
//iErr := 0;
// IF NOT TSUtil.ReadStatementTransactions(TRUE,iErr) THEN BEGIN
// IF (iErr <> 0) THEN BEGIN
// IF NOT PosConfirm(Text223,FALSE) THEN
// EXIT;
// END;
//END;
//JR-0001+//
JR-0001-:这是注释块的开始
JR-0001+:这是注释块的结尾
我能够删除单行注释(以“//JR-”开头,但我坚持删除一块注释。
任何帮助表示赞赏。
解决方案
一种方法是循环。
对于输入文件的每一行:
- 如果该行看起来像“开始评论”行,则设置“是评论”标志
- 如果当前未设置标志,则输出该行
- 如果该行看起来像“结束注释”,则取消设置标志
ForEach-Object
是一个循环,可以如下表达
$isComment = $false # prepare flag variable
$inputLines | ForEach-Object {
if ($_ -match '^//JR-\d*-//') { $isComment = $true } # enable flag
if (-not $isComment) { $_ } # output if flag is not set
if ($_ -match '^//JR-\d*\+//') { $isComment = $false } # disable flag
}
正则表达式是
^ # 字符串开头 // # 两个斜线 JR-#“JR-” \d* # 位数(0-n 次重复) - # 减号(第二个表达式中的加号) // # 两个斜线