2012-10-11 21 views
0

问题 - 多行,分号分隔的文件已经在列79或80处拆分(出于某种奇怪的原因,并不总是相同的)。我需要一个正则表达式来修复第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与[空] //离去:

1sdf.............................mnopqr........xyz......................[cr] 
xxx[lf] 
2sdf.............................mnopqr........xyz...................... 

通3: 替换\rxxx\n\r\n

//离开:

1sdf.............................mnopqr........xyz......................[cr][lf] 
2sdf.............................mnopqr........xyz...................... 

而且清理的其余部分是微不足道的。

有没有什么办法一步到位呢?输出来自一个常见的金融应用程序,我宁愿能够自己修复这些文件,而不是尝试并获得许多多个客户端来调整其输出。

+0

确实取代了'\ r \ n \ s *((\ r \ n)?)'与被捕获的组号。 '1'不工作? (如果您告诉我们您正在使用哪种引擎/技术,我可以自己测试并将其作为正确答案发布;)) –

+0

不可以。它取代了所有换行符,并留下了一行代码。我在记事本++中玩,但我可以根据需要调整口味。 –

+0

我刚测试过它,它有一个小小的警告。让我写一个答案... –

回答

1

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

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

替换为:\1

然后运行 ​​“全部替换” 一次。但是,make sure you update to Notepad++ 6!否则匹配\r\n与正则表达式将无法在Notepad ++中工作。

+0

这个技巧。 –

0

假设^\s*\r\n匹配你想要的,你上面说的删除线,我相信你可以通过\r\n

这是我的第一个正则表达式,因此,如果它不工作更换\r\n\s*\r\n|\r\n做到这一点,不是苛刻:-)

好运

+0

这不会按照要求去除每三个“\ r \ n”中的第一个。 –

+0

@ m.buettner我期望它被删除。这就是管道加上附加'\ n \ r'的原因 – Luis

+1

它与第一个'\ r \ n'匹配,但不会被替换。你用'\ r \ n'替换管道后面的'\ r \ n',只是将它留在原地。 –

相关问题