Reputation: 116
I want to extract the strings from my source text which meet these conditions:
.
or ;
(regardless of line breaks)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
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
Reputation: 97938
Try this:
while($text =~ /(?:(?<!.)|\n)([aeuoi][^;.]*[;.])/img)
{
print "$1\n";
}
Upvotes: 1