鉴于此示例数据:
00-1234T|`CRLF`
Data|Commments|`CRLF`
12-3456|Some data|Notes|`CRLF`
65-8436ZZ|Data|`CRLF`
|`CRLF`
45-4576AA|Some data|Comments|`CRLF`
98-4392REV|Data|`CRLF`
|`CRLF`
00-5432|Some Data|Some Comments|
(我在CRLF每一行都添加了“ ”,以更清楚地说明存在什么以及需要替换什么)
每条记录在一行中只能有三个管道,CRLF第三个管道后面有一个。因此需要修复第 1、4 和 7 行(预查找/替换),这意味着CRLF需要将第三个管道之前的任何 s 替换为“占位符”,即“#CRLF#”。
我能想到的最接近的是^((?:[^\v|]*\|){3})(.+),它将匹配(突出显示)第 3 & 4、6 & 7 和 9 & 10 行。我的期望(要求)是在CRLF第 2、5 和 & 行中找到 s 8 并将其替换为“#CRLF#”。
[更新]
在这个问题上睡觉后,我醒来意识到,为了更准确地找到给定记录的开头 - 无论是在一行还是多行 - 我应该补充一点,第一列将始终以模式开头[0-9][0-9]-[0-9][0-9][0-9][0-9]并且可能已经结束之后的三个字母数字字符。
我修改了上面的示例数据以反映这一点。

