Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 我需要一个正则表达式来修复在第80列拆分的行_Regex - Fatal编程技术网

Regex 我需要一个正则表达式来修复在第80列拆分的行

Regex 我需要一个正则表达式来修复在第80列拆分的行,regex,Regex,问题-以分号分隔的多行文件在第79列或第80列被拆分(由于某些奇怪的原因,不总是相同的) 在我看来,正则表达式是合适的解决方案,所以现在我有两个问题 线路为: 1sdf.............................mno[cr][lf] pqr........xyz......................[cr][lf] .....|.....|.....|.....|.....|.....|[cr][lf] 2sdf.............................mn

问题-以分号分隔的多行文件在第79列或第80列被拆分(由于某些奇怪的原因,不总是相同的)

在我看来,正则表达式是合适的解决方案,所以现在我有两个问题

线路为:

1sdf.............................mno[cr][lf]
pqr........xyz......................[cr][lf]
.....|.....|.....|.....|.....|.....|[cr][lf]
2sdf.............................mno[cr][lf]
pqr........xyz......................[cr][lf]
.....|.....|.....|.....|.....|.....|[cr][lf]
3sdf.............................mno[cr][lf]
pqr........xyz......................[cr][lf]
.....|.....|.....|.....|.....|.....|[cr][lf]
4sdf.............................mno[cr][lf]
pqr........xyz......................[cr][lf]
.....|.....|.....|.....|.....|.....|[cr][lf]
... 10000 rows ...
其中管道是非空格字符(可能是制表符)

我需要:

1sdf.............................mnopqr........xyz......................[cr][lf]
2sdf.............................mnopqr........xyz......................[cr][lf]
3sdf.............................mnopqr........xyz......................[cr][lf]
4sdf.............................mnopqr........xyz......................[cr][lf]
我设法完成了这项工作

通过1:
^\s*\r\n
替换为
\rxxx\n

//将空行替换为\rxxx\n

1sdf.............................mno[cr][lf]
pqr........xyz......................[cr][lf]
[cr]xxx[lf]
2sdf.............................mno[cr][lf]
pqr........xyz......................[cr][lf]
通过2: 将
\r\n
替换为[empty] //离开:

1sdf.............................mnopqr........xyz......................[cr]
xxx[lf]
2sdf.............................mnopqr........xyz......................
1sdf.............................mnopqr........xyz......................[cr][lf]
2sdf.............................mnopqr........xyz......................
通过3: 将
\rxxx\n
替换为
\r\n

//离开:

1sdf.............................mnopqr........xyz......................[cr]
xxx[lf]
2sdf.............................mnopqr........xyz......................
1sdf.............................mnopqr........xyz......................[cr][lf]
2sdf.............................mnopqr........xyz......................
剩下的清理工作也很琐碎


有没有办法一步到位?输出来自一个常见的金融应用程序,我宁愿自己修复这些文件,也不愿尝试让多个客户端调整它们的输出。

假设
^\s*\r\n
与您上面所说的要删除的行匹配,我相信你可以用
\r\n\s*\r\n | \r\n
替换
\r\n

这是我的第一个正则表达式,所以如果它不起作用,不要太苛刻:-)

祝您好运

在记事本++(使用正则表达式模式)中,您可以使用以下命令:

查找内容:
\r\n(\s*\r\n)?

替换为:
\1


然后只运行一次“全部替换”。但是!!否则,用正则表达式匹配
\r\n
在记事本++中不起作用。

用捕获的组号替换
\r\n\s*(\r\n)?
无效吗?(如果你告诉我们你使用的是哪种引擎/技术,我可能会亲自测试,并将其作为正确答案发布。)不。它替换了所有的换行,只剩下一行。我正在用记事本++玩它,但我可以根据需要调整口味。我刚刚测试过,它的工作原理有一个小警告。让我写一个答案…这不会按照要求删除三个
\r\n
中的第一个。@m.buettner我希望它会被删除。这就是管道后面跟着附加的
\n\r
的原因。它与第一个
\r\n
匹配,但不会被替换。您可以将管道后面的
\r\n
替换为
\r\n
,使其保持原位。