php 输出某一列后面全部字符
有一些记录,空白分割的,空格或Tab不确定,内容仅常规 ASCII 字符组合
比如每一行不少于10列
我想取的第十列以及之后的部分作为提取的字符串存储
现在根据特定的几个字符做的正则,还有没有其他的方法取列以及余下的部分
Hotneca
11 years, 3 months ago
Answers
<?php
$strs =<<<EOF
1111 2222 3333 4444 这一行全是空格
1111 2222 3333 4444 这一行全是tab
1111 2222 3333 4444 这一行有空格有tab
EOF;
$n = 5; // 取的是第5列
//这个事情用正则来处理
$reg = '/\s*(?:\S+\s+){' . ($n - 1) . '}(.*)/';
$matches = array();
preg_match_all($reg, $strs, $matches);
print_r($matches[1]);
输出
关于这个正则的解释
因为内容是空白分割,所以可以认为就2中区别,空白字符(\s)与非空白字符(\S),而列的组成则是
非空白字符 空白字符 非空白字符 空白字符 非空白字符
可以看到规律为
(非空白字符 空白字符) (非空白字符 空白字符) (非空白字符 空白字符) (非空白字符)
换成正则的字符
(\S+\s+) (\S+\s+) (\S+\s+) (\S+)
banpu
answered 11 years, 3 months ago