On Tue, Apr 18, 2006 at 08:52:04PM -0400, Jim wrote:
> i am trying to match a '!' followed by any char but a '!' or no chars
> (string is only a '!')
>
> this is what I have and it is not working:
>
> $str = "!!";
> # this is not working. it is matching "!!"
> print "$str\n" if $str =~ /\![^!]*/;
>
> Thanks for any help
more effective:
print "$str\n" if $str =~ /![^!]+/;
You didn't say anything about whether that bang should be the first
character in the string, and you weren't clear about whether more than
one non-bang character following that first bang is acceptable. This
will match anywhere in the string, one or more non-bang characters
following a bang. If you allow more characters and others beyond the
first following the initial bang can also be bangs, you might try this:
print "$str\n" if $str =~ /![^!]/;
If only two characters are allowed on the line for a match, this would
work:
print "$str\n" if $str =~ /^![^!]$/;
As someone else noted, this does smell a little like homework, but I'm
willing to give the benefit of the doubt this time. You should really
have a look at the perldoc for regular expressions:
$ perldoc perlre
. . . assuming unixy command prompt syntax.
--
Chad Perrin [ CCD CopyWrite | http://ccd.apotheon.org ]
"There comes a time in the history of any project when it becomes necessary
to shoot the engineers and begin production." - MacUser, November 1990
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>