从正则表达式获取字符串中的文本

时间:2012-05-15 21:38:03

标签: php regex

我有以下字符串:

         Apples Bananas Oranges
Me       1      2       3  
Brother  4      4       5

我需要一个正则表达式,以获得我们每个人“我和我的兄弟”所拥有的苹果,香蕉和橘子的数量。

请帮助我,我在这里完全无能为力。

2 个答案:

答案 0 :(得分:2)

你可能想要这样的代码:

$string = file('input.txt');
$headers = array();
$results = array();
foreach($string as $i => $line) {
    preg_match_all('@(\w+)@', $line, $matches);
    if (!$i) {
        $headers = $matches[0];
    } else {
        $name = array_shift($matches[0]);
        $results[$name] = array_combine($headers, $matches[0]);
    }   
}   
print_r($results);

会导致:

Array
(   
    [Me] => Array
        (   
            [Apples] => 1
            [Bananas] => 2
            [Oranges] => 3
        )   

    [Brother] => Array
        (   
            [Apples] => 4
            [Bananas] => 4
            [Oranges] => 5
        )   

)   

答案 1 :(得分:0)

粗略

$regexp = "/([\w]+) +([\d]+) +([\d]+) +([\d]+)/";
$matches = array();
preg_match($regexp, $yourDataSet, $matches);

根据您是使用1个长字符串还是带有换行符的字符串,您可以在正则表达式中的最后一个/之前添加\ n并使其更精确。