我有一个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
答案 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 。