Можно ли вытащить такие данные с помощью регулярного выражения?

pablobablo

Новичок
Подскажите, пожалуйста.

Имеется код:
PHP:
<?php

$s = 'one two three four five';
preg_match_all( '/[a-z]+/', $s, $m );
print_r( $m );

?>
Который выводит:
PHP:
Array
(
    [0] => Array
        (
            [0] => one
            [1] => two
            [2] => three
            [3] => four
            [4] => five
        )

)
Можно ли написать регулярное выражение, чтоб захватывались данные в таком виде:
PHP:
Array
(
    [0] => Array
        (
            [0] => one two
            [1] => two three
            [2] => three four
            [3] => four five
        )

)
 

SiZE

Новичок
Так наверное только маньяк регулярных выражений сможет написать :)

PHP:
$s = 'one two three four five';
preg_match_all( '#[a-z]+#', $s, $m );
$new = array();
$cnt = 0;
foreach( $m[0] as $k => $v ) {
    $new[ $cnt ] = $v;
    if ( array_key_exists( $k+1, $m[0] ) ) {
        $new[ $cnt ] .= ' '.$m[0][ $k+1 ];
    } else {
        unset( $new[ $cnt ] );
        break;
    }
    $cnt++;
}
var_dump( $new );
 

varan

Б̈́̈̽ͮͣ̈Л̩̲̮̻̤̹͓ДͦЖ̯̙̭̥̑͆А͇̠̱͓͇̾ͨД͙͈̰̳͈͛ͅ
а я вот не люблю хитрожопые регулярки. Написать-то их можно с грехом пополам, а вот следующий программер не сможет понять и отдебажить если что
PHP:
$words = explode(" ", $s);
$doubleWords = array();
for ($i=0; $i<count($words)-1; $i++)
    $doubleWords[] = $words[$i] . " " . $words[$i+1];
 

Absinthe

жожо
а я вот не люблю хитрожопые регулярки. Написать-то их можно с грехом пополам, а вот следующий программер не сможет понять и отдебажить если что
Поэтому я зачастую делаю в 2 этапа вместо 1 и с каментами.
Но писать 20-30 строк кода вместо 1-2 коротких(но хитрых) регулярок - это слишком, пусть следующий либо учится, либо увольняется.
 

itprog

Cruftsman
Absinthe
Тогда уж до конца:

PHP:
$s = 'one two three four five';
preg_match_all('/(?=\b(\S+\s\S+)\b)/', $s, $m);
print_r($m);
 

varan

Б̈́̈̽ͮͣ̈Л̩̲̮̻̤̹͓ДͦЖ̯̙̭̥̑͆А͇̠̱͓͇̾ͨД͙͈̰̳͈͛ͅ
Поэтому я зачастую делаю в 2 этапа вместо 1 и с каментами.
Но писать 20-30 строк кода вместо 1-2 коротких(но хитрых) регулярок - это слишком, пусть следующий либо учится, либо увольняется.
Ну, в данном примере не 20-30 строк...
 
Сверху