Найти текст между строкой - PullRequest
       2

Найти текст между строкой

0 голосов
/ 27 февраля 2011

Как извлечь текст, используя perl из строки, например:


Get text 1 ...
---------------------------------------------------------------------------------------------
Get text 2 ...
---------------------------------------------------------------------------------------------
Get text 3
---------------------------------------------------------------------------------------------

Результат должен выглядеть примерно так:

%texts =  ( 'text1' => 'Get text 1 ...', 'text2' => 'Get text 2 ...',
'text3' => 'Get text 3 ...' )

Что-то вроде PHP preg_match_all.

Большое спасибо

Ответы [ 4 ]

1 голос
/ 27 февраля 2011

Если ваш preg_macth_all выглядит как preg_match_all('/(foo)/', $text, $matches), эквивалент perl будет примерно таким: @matches = $text=~/(foo)/g.

0 голосов
/ 27 февраля 2011

В Perl> = 5.10 это должно быть:

while( $string =~ /^\w+\s+(\w+)\s+(\w+)[^\n\r]*/pgms ) {
   $texts{$1.$2} = ${^MATCH}
}

Привет

БВУ

0 голосов
/ 27 февраля 2011
my $i = 1;
my %text = ();
open my $fh, "<", \$the_string;
while (<$fh>) {
    if (/--------------/) {  # text separator
        $i++;
    } else {
        $text{"text$i"} .= $_;
    }
}
0 голосов
/ 27 февраля 2011

Я не уверен, что это именно то, что вам нужно, но следующий код извлекает строки из заданной вами строки и помещает их в хеш:

use Data::Dumper;

my $str = 'Get text 1 ...
---------------------------------------------------------------------------------------------
Get text 2 ...
---------------------------------------------------------------------------------------------
Get text 3
---------------------------------------------------------------------------------------------';


my %hash = (
    'text1' => $str =~ /.*text 1.*/g,
    'text2' => $str =~ /.*text 2.*/g,
    'text3' => $str =~ /.*text 3.*/g);


print Dumper(\%hash);

Вывод этого фрагмента:

$VAR1 = {
          'text2' => 'Get text 2 ...',
          'text1' => 'Get text 1 ...',
          'text3' => 'Get text 3'
        };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...