bgarate
bgarate

Reputation: 116

Printing Text on Perl with RegEp

I want to extract the strings from my source text which meet these conditions:

I tried this:

$_ = join("",<>);

foreach ($text =~ /^[AEIOUaeiou][\w\s,]*[.;]/m)
{
    print "$text\n";
}

An example of how this should work:

Input:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. In aliquet lobortis vehicula. Sed
augue lectus, mattis nec tempus vel, mattis vel sapien, morbi venenatis faucibus pulvinar,
quisque ut semper leo; Nam porta risus et dui molestie sodales. Sed ullamcorper, orci ut
suscipit cursus, ipsum ipsum scelerisque velit, vel facilisis ligula urna eu felis.
Quisque sed orci eu felis rhoncus fermentum lobortis quis lorem. Nulla hendrerit, ligula
semper sagittis viverra, quam lacus condimentum augue, ut varius augue orci et velit.
Praesent tellus erat, vulputate non congue non, sagittis vel quam. Integer orci metus,
dapibus at suscipit scelerisque, ultrices at neque. Etiam fermentum molestie diam ac
semper. Donec convallis tincidunt augue, vel tincidunt mi aliquam ut. Maecenas rutrum ante
eget mauris lobortis ut consectetur neque congue.

Output:
"augue lectus, mattis nec tempus vel, mattis vel sapien, morbi venenatis faucibus   pulvinar,"
quisque ut semper leo;"
"eget mauris lobortis ut consectetur neque congue."

Upvotes: 1

Views: 59

Answers (2)

Qtax
Qtax

Reputation: 33908

Your regex works, but you never set $text, nor do you print the match.

You could do it like this: (ideone demo)

use strict;
use warnings;

my $text = join "", <>;

while($text =~ /^[aeiou][^.;]*[.;]/mig)
{
        print "$&\n";
}

Output:

augue lectus, mattis nec tempus vel, mattis vel sapien, morbi venenatis faucibus pulvinar,
quisque ut semper leo;
eget mauris lobortis ut consectetur neque congue.

Upvotes: 1

perreal
perreal

Reputation: 97938

Try this:

while($text =~ /(?:(?<!.)|\n)([aeuoi][^;.]*[;.])/img)
{
    print "$1\n";
}

Upvotes: 1

Related Questions