[Israel.pm] Regex question

Avishalom Shalit avishalom at gmail.com
Wed Dec 24 07:25:16 PST 2008


though if anyone has an elegant way of capturing an arbitrary number of parens

i.e. something like
m/(Title.*?)*/ms
except that it should work


i'd love to hear it

2008/12/24 Avishalom Shalit <avishalom at gmail.com>:
> @b=split(/\b(?=Title)/,$text);
> that should do it,
> split on the word boundary right vefore the Title
>
> 2008/12/24 Shlomi Fish <shlomif at iglu.org.il>:
>> On Wednesday 24 December 2008, Peter Gordon wrote:
>>> Suppose I have the following code
>>> my $text =<<EOF;
>>> Title1
>>>   text1
>>>   text2
>>> Title2
>>>   text3
>>>   text4
>>> EOF
>>>
>>> @blocks = $text =~ m!(^Title\S+.*?)(?=^Title|\Z)!mgs ;
>>>
>>> The idea is to split the text into blocks. This code works, but the
>>> lookahead requires repeating part of the first half of the regex.
>>>
>>> Is there a shorter regex, without the repetition, that can do the same
>>> thing?
>>
>> Don't know about shorter, but you can extract the common string to a variable:
>>
>> {{{{{{{{{{{{{{{{
>> #!/usr/bin/perl
>>
>> use strict;
>> use warnings;
>>
>> use Data::Dumper;
>>
>> my $text =<<'EOF';
>> Title1
>>  text1
>>  text2
>> Title2
>>  text3
>>  text4
>> EOF
>>
>> my $delim = "^Title";
>>
>> my @blocks = $text =~ m!($delim\S+.*?)(?=$delim|\Z)!gms ;
>>
>> print Dumper([\@blocks]);
>> }}}}}}}}}}}}}}}}
>>
>> A few notes:
>>
>> 1. You should always specify the delimiters of the here-doc explicitly. People
>> don't know off-hand if it's <<'EOF' or <<"EOF".
>>
>> 2. Someone I know recommends to sort the option characters for a Perl regex
>> alphabetically - like "gms" instead of "mgs". This facilitates searching for
>> them.
>>
>> Regards,
>>
>>        Shlomi Fish
>>
>>>
>>> Peter
>>>
>>> _______________________________________________
>>> Perl mailing list
>>> Perl at perl.org.il
>>> http://perl.org.il/mailman/listinfo/perl
>>
>>
>>
>> --
>> -----------------------------------------------------------------
>> Shlomi Fish       http://www.shlomifish.org/
>> My Aphorisms - http://www.shlomifish.org/humour.html
>>
>> Shlomi, so what are you working on? Working on a new wiki about unit testing
>> fortunes in freecell? -- Ran Eilam
>> _______________________________________________
>> Perl mailing list
>> Perl at perl.org.il
>> http://perl.org.il/mailman/listinfo/perl
>>
>
>
>
> --
> -- vish
>



-- 
-- vish



More information about the Perl mailing list