Perl Regex:用空格和制表符分隔,但避免文件名上的空格?

时间:2012-05-31 04:19:31

标签: php regex parsing command-line pcre

我正在解析命令行应用程序的输出,如下所示:

0644    1276317623781623132132      Crappy little message        filename.txt
0644    1276317623781623132132      Crappy little message        My File.txt
0644    1276317623781623132132      Crappy little message        Crazy FILE.txt

有时字段由制表符分隔,有时按空格分隔。如何编写正则表达式来分隔字段?我在[\ s] +中使用preg_split,但这会弄乱消息和文件名。我在这里很丢失。

1 个答案:

答案 0 :(得分:1)

解决方案是构建一个更具体的正则表达式来匹配:

例如,假设最后一个是标签,您可以点击:

您可以使用

进行拆分
preg_match('/^([0-9]{4}).*([0-9]{22})[\s]*([^\t]*)[\s]*(.*)$/', $string, $aMatches);

如果上面的例子波动,您可以改变它以满足您的需求。或者最后一个不是标签而是一堆空格,然后查找所需的空格数等等。