问题描述:
无法将多行正则表达式与Powershell匹配(但它在C#中可以工作)
回答:
在Powershell中,正则表达式的匹配默认是单行模式,即将整个文本视为一行进行匹配。如果需要匹配多行文本,需要使用特定的标记来指定多行模式。
在Powershell中,可以使用(?s)
标记来开启多行模式,该标记表示将.
匹配任意字符的行为扩展到跨行。以下是一个示例:
$pattern = "(?s)start.*?end"
$text = @"
start
line 1
line 2
end
"@
$matches = [regex]::Matches($text, $pattern)
foreach ($match in $matches) {
Write-Host $match.Value
}
上述示例中,(?s)
标记开启了多行模式,.*?
表示非贪婪匹配任意字符,start
和end
是需要匹配的文本。运行上述代码,将输出匹配到的多行文本。
推荐的腾讯云相关产品和产品介绍链接地址:
请注意,以上链接仅供参考,具体产品选择应根据实际需求和情况进行评估。
领取专属 10元无门槛券
手把手带您无忧上云