----- Original Message -----
From: "Chas. Owens" <chas.ow...@gmail.com>
To: "Mike Blezien" <mick...@frontiernet.net>
Cc: "Perl List" <beginners@perl.org>
Sent: Wednesday, March 23, 2011 8:42 AM
Subject: Re: Better Regrex
On Wed, Mar 23, 2011 at 09:05, Mike Blezien <mick...@frontiernet.net> wrote:
Hello,
I'm working on a simple regrex issue which I got to work but I think there's a
better way to do this. This is what I have right now. I need to simply remove
the string section in red.
my($marker);
my $message = "Why are we here? To bless, inspire and uplift one another. #TRB
#inspiration #loa";
if($message =~ /\#(.*)/i) { $marker = $1; }
$message =~ s!$mark!!gi;
$message =~ s!\#!!gi;
#Resulting String wanted:
Why are we here? To bless, inspire and uplift one another.
The method I'm using above works and we get the results wanted but I was
looking at it again and I think there's a better way to do this. Any suggested
would be appreciated.
snip
Removal can be done with one substitution:
$message =~ s/\s*#\S+\s*//g;
That will remove any whitespace characters followed by a # followed by
one or more non-whitespace characters and the whitespace that follows
it.
If you want to save the markers, you will need to match first, then remove them:
#!/usr/bin/perl
use strict;
use warnings;
my $message = "Why are we here? To bless, inspire and uplift one
another. #TRB #inspiration #loa";
my @markers = $message =~ /#(\S+)/g;
$message =~ s/\s*#\S+\s*//g;
print "[$message]\nmarkers: ", join(", ", @markers), "\n";
=========================================
Thx's this work very well, allot cleaner.
Mike
--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/