我正在解析来自控制台的文件中的信息,每行末尾都是日期,但该行也可能已经列出了日期。输入行如下所示:
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.
我错过了什么?
答案 0 :(得分: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];
}