从文本文件中获取某些字符串并将其放入csv中
问题描述:
我有一个包含数百行数据的文本文件 - 每个数据行都用换行符分隔。从文本文件中获取某些字符串并将其放入csv中
的data.txt:
......Tue Dec 13 [alphanumeric1.alphanumeric1] : blah [alphanumeric1] ? blahblah [alphanumeric1] : blah
..Tue Dec 13 [alphanumeric2.alphanumeric2] : blah [alphanumeric2] ? blahblah [alphanumeric2] : blah
..................Tue Dec 13 [alphanumeric3.alphanumeric3] : blah [alphanumeric3] ? blahblah [alphanumeric3] : blah
每条线的长度各不相同,都是独一无二的,但每个都有三套[]的和里面的数据是我想要的。
目标是逐行读取data.txt,将[]中的数据抽出到csv的自己的列中。
result.csv:
col1 col2 col3
alphanumeric1.alphanumeric1 alphanumeric1 alphanumeric1
alphanumeric1.alphanumeric2 alphanumeric2 alphanumeric2
alphanumeric1.alphanumeric3 alphanumeric3 alphanumeric3
So thats:
alphanumeric1.alphanumeric1,alphanumeric1,alphanumeric1
alphanumeric1.alphanumeric2,alphanumeric2,alphanumeric2
alphanumeric1.alphanumeric3,alphanumeric3,alphanumeric3
我已经得到了文本文件打开罚款:
用的preg_match$fh = fopen('data.txt','r');
while ($line = fgets($fh)) {
echo $line;
}
,但我有问题和获得的[]到数据一个csv。
preg_match('/\[(.+)\]/', $line, $matches);
任何与preg_match的帮助和推送数据到.csv将不胜感激。
答
我选择与preg_match_all
一起工作,因为它会在$line
以内捕获更多的一次图案。其次我修改了正则表达式如下
preg_match_all('/\[([^\]]+)\]/', $line, $matches);
什么[^\]]+
说是匹配至少一个字符是不是]
。如果您还想要捕获空的发生,您可以将修改器+
更改为*
。 []
。