如何用PowerShell的-split运算符正确拆分含函数结构的文本文件为数组
提取目标函数的PowerShell实现方案
- 核心方法:借助PowerShell结合.NET正则的平衡组功能,精准识别成对花括号包裹的函数体,同时过滤注释行与MPV前缀的函数。
- 完整代码:
# 替换为你的文件路径 $filePath = "your-functions-file.txt" $content = Get-Content -Path $filePath -Raw # 正则匹配规则:匹配非注释、非MPV前缀的完整函数 $funcRegex = '(?m)^(?!\s*;)(?!MPV)\w+\(isHold, taps, state\)\s*\{(?:[^{}]|(?<Open>\{)|(?<Close-Open>\}))*(?(Open)(?!))\}' # 提取结果到数组 $targetFunctions = [regex]::Matches($content, $funcRegex) | ForEach-Object { $_.Value } # 验证结果(可选) $targetFunctions | ForEach-Object { Write-Host "=== 提取到的函数 ===" Write-Host $_ }
- 正则规则细节:
(?m):开启多行模式,让^能匹配每行的起始位置(?!\s*;):排除任意空格开头后接;的注释行(?!MPV):过滤函数名以MPV开头的目标- 平衡组部分:处理函数体内部嵌套花括号的场景,确保只匹配完整的函数结构,不会截断或多匹配
内容的提问来源于stack exchange,提问作者hellen_dorandt89
相关产品推荐
相关产品推荐

