Aqui estão duas maneiras possíveis de criar a porta 1: 1 da chamada do construtor C #:
$regex = new-object regex('^\s*GO\s*$', ([System.Text.RegularExpressions.RegexOptions]::MultiLine -bor [System.Text.RegularExpressions.RegexOptions]::IgnoreCase))
-bor
é o mesmo que o |
em C #. Os parênteses extras são necessários para não confundir o mecanismo de resolução de sobrecarga.
Para uma melhor legibilidade, você também pode aproveitar a chamada interna para Enum.Parse
:
$regex = new-object regex('^\s*GO\s*$', [System.Text.RegularExpressions.RegexOptions] "MultiLine, IgnoreCase")
Também não pude ter opções in-line para trabalhar, parece que elas não são compatíveis / quebradas no construtor .NET Regex
. Eles funcionam ao usar métodos estáticos como Regex.Split
:
[regex]::Split($text, "(?im)^\s*GO\s*$")
Após um exame mais aprofundado, o comando original funciona para mim. Eu cometi um erro ao tentar mais cedo. Aqui está um snippet pronto para copiar / colar:
([regex]'(?im)^\s*GO\s*$').Split(@"
SET ANSI_PADDING OFF
END
GO
USE [DB]
SET NOCOUNT ON
GO
IF NOT EXISTS(SELECT * FROM dbo.Table)
[[[stuff]]]
GO
IF EXISTS
"@)