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

如何在Powershell中用REGEX解析含换行的SWIFT金融报文字段

问题原因

你遇到的匹配失效问题核心是两个原因:

  • 默认情况下PowerShell的Select-String处理输入时会按行拆分内容,每一行单独执行正则匹配,跨两行的字段被拆成两个独立匹配对象,自然无法识别到换行符。
  • 正则默认配置下.元字符不会匹配\r/\n换行符,就算传入完整字符串,原有规则也无法覆盖多换行的场景。

解决方案

完全可以仅通过正则完成解析需求,无需单独编写字段结束判断函数,操作步骤如下:

  1. 首先读取SWIFT报文时将完整内容加载为单个字符串,不要逐行读取。如果是从文件读取,加-Raw参数即可:
$swift = Get-Content -Path "你的SWIFT报文文件路径" -Raw
  1. 统一使用适配SWIFT字段规则的正则表达式,无需分开写带/不带换行的两个规则,匹配逻辑为识别:61:字段开头后,一直匹配到下一个:两位数字:格式的SWIFT字段开头前停止,自动覆盖所有换行场景:
# 正则说明:SingleLine参数让.匹配所有字符包括换行,预读断言判断下一个字段的起始标识
$pattern = ':61:(?:.(?!:\d{2}:))+'
$transaction = [regex]::Matches($swift, $pattern, [System.Text.RegularExpressions.RegexOptions]::SingleLine).Value

如果偏好使用Select-String,也可以改写为:

$transaction = $swift | Select-String -Pattern $pattern -AllMatches -SingleLine | ForEach-Object { $_.Matches.Value }

额外说明

如果你的SWIFT报文中存在超过2行的:61字段,上述规则也可以自动适配,不需要额外调整。

内容的提问来源于stack exchange,提问作者Kai Herrmann

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:45:07