删除2行之间的内容

时间:2017-07-06 13:16:18

标签: powershell

我有一个pacfile,我正在尝试更新,需要删除两个字符串之间的内容;字符串本身应该保留:

(ViewBag.Languagess, "Id", "Name")

 // OFFICE 365 DIRECT ACCESS

示例:

// END OFFICE 365 DIRECT ACCESS

我想删除顶行和底行之间的行

// OFFICE 365 DIRECT ACCESS
  if (isInNet(hostip, "23.103.132.0","255.255.252.0") ||    //EOP
  isInNet(hostip, "23.103.136.0","255.255.248.0") ||    //EOP
  isInNet(hostip, "23.103.144.0","255.255.240.0") ||    //EOP
  isInNet(hostip, "23.103.191.0","255.255.255.0") ||    //EOP
// END OFFICE 365 DIRECT ACCESS

1 个答案:

答案 0 :(得分:4)

$regex=@'
(?ms)^(\s*// OFFICE 365 DIRECT ACCESS\s*?\r?\n).*?\r?\n(\s*// END OFFICE 365 DIRECT ACCESS\s*)
'@
(Get-Content -Raw .\o365.pac) -replace $regex, '$1$2'
  • -replace $regex, '$1$2'替换正则表达式与第1($1)和第2个捕获组($2)(带括号的子表达式,(...))内部匹配的内容它匹配。
    在这里,这些捕获组捕获包含感兴趣范围的字符串。

  • (?ms)为正则表达式设置 m ulti-line和 s 单行选项:

    • m表示^$应匹配每个的开头和结尾,而不是整个输入字符串。
    • s表示元字符.也应匹配\n个字符,因此.*等表达式可用于匹配跨行 >
  • \r?\n匹配单个换行符,包括CRLF和LF变种。

  • .*?将该部分与删除相匹配;请注意?后面的非贪婪修饰符(.*),以确保匹配结束字符串的 next