in reply to Re: Regex to catch UP TO a particular string?
in thread Regex to catch UP TO a particular string?

Thanks, that doesn't seem to get any results though :/
my @tags; my $i = 0; my @split = split /\n/, $summary; foreach (@split) { my $contents; if ($_ !~ /^\s*\t*\[\[(.*)\]\]/) { next; } print qq|Tag is: $1 \n|; my $article_name = $1; if (/\Q[[$article_name]]\E(.*?)\[\[/s) { print "got content: $1 \n"; $contents = $1; } push @tags, { name => $article_name, contents => $contents }; + } use Data::Dumper; print Dumper(@tags);

..gives:
$VAR1 = { 'contents' => undef, 'name' => 'France' }; $VAR2 = { 'contents' => undef, 'name' => 'Cities of France' }; $VAR3 = { 'contents' => undef, 'name' => 'Things to see in France' }; $VAR4 = { 'contents' => undef, 'name' => 'Things to do in France' };
..any ideas?

TIA!

Andy

Replies are listed 'Best First'.
Re^3: Regex to catch UP TO a particular string?
by Ratazong (Monsignor) on Mar 24, 2010 at 14:42 UTC

    In your second post, you split your summary into lines

    my @split = split /\n/, $summary;

    However your expected result contains multiple lines. The regex matches the beginning of the next line starting with [[ - and as the [[ occurs in the first column, that match is empty.

    Try to work on your original data, not the line-by-line-version, e.g. by replacing

    if (/\Q[[$article_name]]\E(.*?)\[\[/s) {

    with

    if ($summary =~ /\Q[[$article_name]]\E(.*?)\[\[/s  {
      Yeah, that was it - realised it just after I posted (typical!)

      Thanks anyway :)

      Andy
Re^3: Regex to catch UP TO a particular string?
by ultranerds (Hermit) on Mar 24, 2010 at 14:42 UTC
    Never mind - was me being stupid ;) (loooong day)

    if ($summary =~ /\Q[[$article_name]]\E(.*?)\[\[/s) {

    Thanks :)

    Cheers