【发布时间】:2016-01-08 18:50:37
【问题描述】:
我正在尝试在 Perl 中读取正则表达式格式。有时我也会看到 3 行的格式,而不是单行。
对于下面的单行格式,我可以正则表达式为
/^\s*(.*)\s+([a-zA-Z0-9._]+)\s+(\d+)\s+(.*)/
获取前 3 个单独的项目
Hi There FirstName.LastName 10 3/23/2011 2:46 PM
下面是我看到的多行格式。我正在尝试使用类似的东西
/^\s*(.*)\n*\n*|\s+([a-zA-Z0-9._]+)\s+(\d+)\s+(.*)$/m
获取单个项目,但似乎不起作用。
Hi There
FirstName-LastName 8 7/17/2015 1:15 PM
Testing - 12323232323 Hello There
有什么建议吗?多行正则表达式可以吗?
注意:在同一个输出中,我可以看到单行或多行或两者,因此输出可以如下所示
你好 Line1 FirstName.LastName 10 3/23/2011 2:46 PM
你好 Line2
Line2FirstName-LastName 8 7/17/2015 1:15 PM
Testing - 12323232323 Hello There
你好 Line3 Line3FirstName.LastName 8 3/21/2011 下午 2:46
【问题讨论】:
-
预期输出是什么?
FirstName-LastName不会匹配[a-zA-Z0-9._]+。什么是允许的“一行中的项目”? -
我认为您只需要添加
-部分[a-zA-Z0-9._]就像[a-zA-Z0-9._-];)。 -
.*对于第一项可能过于宽泛。也许你应该把它减少到\S+