如何在Powershell中使用带有空字符串的正则表达式用新行和单词替换单词?
以下是示例内容...我需要删除所有use database
和go
我使用powershell和powershell_ise进行编辑:
使用database_instance
去
如果条件
答案 0 :(得分:0)
您需要在换行符之后匹配Newline
和space
:
/use database_\w+\n\s*\w+/g
答案 1 :(得分:0)
$sql = @"
use database_instance
go
if condition
"@
$sql -ireplace 'use\s+\w+_\w+\s*(?:\r?\n)+\s*go' , ''
-ireplace
用于不区分大小写的正则表达式。use
后跟一个或多个空格\s+
,后跟一个或多个单词字符\w+
,然后是下划线_
。\w+
,后跟0个或更多个空格(以防万一)(?:)
,因为我们不需要结果,这只是封装了一个占用windows和unix行结尾的换行符。它由一个可选的CR后跟一个LF组成,匹配一次或多次。\s*
,然后是go
。这确实留下了一些空白空间,但这不应该是一个大问题,因为SQL解析器不关心。
在你的评论中你说你试过了:
$out -replace "/use database_\w+\n\w+/g"
请注意,powershell不使用/regexhere/
语法。正斜杠被视为文字,因此您指定的标志也是如此。默认情况下,替换是全局的,因此您无论如何都不需要g
。