【发布时间】:2016-01-10 15:34:04
【问题描述】:
我有来自外部程序的如下数据格式,需要获取每行的前 4 个字段(文本、用户名、数字和时间戳)。请注意 Hello line1 是一个字段,第二个是用户名。输出的格式可以是像下面的 line1 这样的单行,也可以是像 line2 这样的三行,或者像下面的 line4 这样的两行。而且格式可以像下面这样混合(不是单行总是或双等)
Hello Line1 FirstName.LastName 10 3/23/2011 2:46 PM
Hello Line2
Line2FirstName-LastName 8 7/17/2015 1:15 PM
Line2Testing - 12323232323 Hello There
Hello Line3 Line3FirstName.LastName 8 3/21/2011 2:46 PM
Hello Line4
Line4FirstName-LastName 8 9/17/2015 1:20 PM
Screen shot of above in a editor
借助这个问题,我能够获得 Multline RegEx:Perl multiline regex for first 3 individual items
感谢@GsusRecovery!
由于我正在逐行读取输出,我认为我不能通过读取单行来利用多行 RegEx。如果格式为一行,是否可以只读取单行,或者如果格式为 2 行,则可以读取 2 行,如果格式为 3 行,是否可以读取 3 行?
还是根据双行或三行格式读取每一行并回溯是否更好。
请提出建议。
【问题讨论】:
-
请确保格式可以理解。我不知道哪条线在哪里。使用 4 空格缩进。
-
考虑不逐行读取文件,使用需要匹配多行字符串中的组的正则表达式可能会获得更好的结果...另外,我 无法理解您的问题.
-
@amadan 抱歉,我添加了屏幕截图。发帖时我无法正确输入格式。
-
@PedroLobito 如何一次读取上述输出并应用多行正则表达式??
-
以我们可以理解的方式编辑您的问题,您可能会得到适当的帮助。