【发布时间】:2021-10-13 10:38:46
【问题描述】:
鉴于此示例数据:
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 行(预查找/替换),这意味着在第三个管道之前的任何 CRLFs 都需要替换为“占位符”,即“#CRLF#”。
我能想到的最接近的是^((?:[^\v|]*\|){3})(.+),它将匹配(突出显示)第 3 行和第 4 行、第 6 行和第 7 行以及第 9 行和第 10 行。我的期望(要求)是找到 @987654326第 2、5 和 8 行中的 @s 并将其替换为“#CRLF#”。
[更新]
在这个问题上睡了一觉之后,我醒来意识到,为了更准确地找到给定记录的开头 - 无论是在一行还是多行 - 我应该补充一点,第一列将始终 以模式[0-9][0-9]-[0-9][0-9][0-9][0-9] 开头,可能之后最多包含三个字母数字字符。
我修改了上面的示例数据以反映这一点。
【问题讨论】: