You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell使用-match正则匹配时如何实现跨换行符匹配所有字符

PowerShell 使用 -match 匹配含换行的全部内容的方法

要让-match操作符的正则匹配到包含换行符在内的所有字符,只需要在正则表达式开头添加单行模式修饰符(?s),该模式下正则的.会匹配包括换行符在内的任意字符。

示例代码

$multilineString = "foo
    bar
         baz"

# 开启单行模式匹配全部内容
$multilineString -match "(?s).*" | Out-Null
$matches[0]

运行后输出会包含原始字符串的全部三行内容(保留原有缩进)。

如果你需要得到无缩进的输出,可调整正则匹配逻辑,自动去除每行的前导空格:

$multilineString -match "(?s).*" | Out-Null
# 逐行处理去除前导空格后输出
$matches[0] -split "`n" | ForEach-Object { $_.TrimStart() }

运行后输出即为:

foo
bar
baz

原错误写法说明

之前(.|\r)*、(.|\r\n)*写法不生效,是因为PowerShell中字符串的换行默认仅为\n,不会携带\r字符,所以无法匹配到换行位置。


内容的提问来源于stack exchange,提问作者Shaun Luttin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 03:45:03