代码仅适用于cmd而不适用于程序

时间:2013-06-03 20:40:47

标签: regex perl cmd

我在这个程序中有一系列的单行程序。他们将在cmd或indiv中单独工作。然而,当他们在一起时,我认为它只是第一个有效的。考虑到我有很多数据可以使用,而且很可能能够批量执行此操作和其他类似的操作,这非常麻烦。我是perl和计算机编程的新手,所以我为初学者错误道歉。任何帮助都会很棒。

谢谢, 约什

use strict;
use warnings;




LINE: while (<>) {
s/POSF /\n/gi;
s/,|\*|\\|\^|\"|=|\?|\$//gi;
s/^/\|/gi;
s/(\|)(number: .*?$|From \d+\/\d+\/\d+ to \d+\/\d+\/\d+|^Units|^Current Face|^Price|^FX|As of \d+\/\d+\/\d+)/$2/gi;
s/\| +|\|\t+/\|/gi;
s/\n/\t/gi;
s/\|/\n/gi;
s/^/\|/gi;
s/(\|)(.*?number: .*?$)/$2/gi;
s/\n//gi;
s/\|/\n/gi;

      print;
}
print "\n\ndone"

1 个答案:

答案 0 :(得分:1)

你的一些单行(#1,#7和#11)插入了行。你的一些单线(#6和#10)组合线。这会影响后续的单行作为一行输入的内容。

在你的新节目中,这意味着一些替换看到的是他们的单行对应物的两倍,或者只是一部分。

您可以通过添加local $/;一次读取整个文件来解决此问题。

那就是说,我挑战你的单线工作的说法。例如,第3个模式将|放在每一行的开头,那么^Units如何在第四个模式中匹配?