2

我正在解析来自控制台的文件中的信息,每行的末尾是日期,但该行也可能已经列出了日期。输入行如下所示:

 00029 --> Ticket Received in QUEUE11 by ABCDE on 04/11/2013 at 11:   4/11/2013 
 00030 07:12.                                                         4/11/2013 

(每个行号之前和行尾都有一个空格)。

foreach循环中的正则表达式如下所示:

if (preg_match("/\s\d{5}\s(.+?)\d{1,2}\/\d{1,2}\/\d{1,4}\s\n/", $line, $match))
{
    $note = $match[1];
}

正则表达式在The Regex Coach中工作,我找不到任何原因导致它在我的代码中不起作用。与 \n 那里,它不匹配任何行。没有它,它会在第一次约会之前中断。

我也尝试了 \r ,它的行为与什么都没有一样。一旦我在循环中回显了 $note,我正在寻找看起来像这样的最终输出。

Ticket Received in QUEUE11 by ABCDE on 04/11/2013 at 11:
07:12.

我错过了什么?

4

1 回答 1

1

使末尾的空格可选:

if (preg_match("/\s\d{5}\s(.+?)\d{1,2}\/\d{1,2}\/\d{1,4}\s*\n/", $line, $match))
//                                                here ___^
{
    $note = $match[1];
}   
于 2013-04-23T08:03:38.567 回答