While the case of '--' and ';' seems to be a matter of debate and jocose comment, you might like to know that you can switch case sensitivity on and off in different parts of a regular expression. You would use constructs like
(?i),
(?-i),
(?i:text) and
(?-i:text). The first two switch case insensitivity on and off respectively. The second two just apply their effect, insensitive or sensitive respectively, to the text inside the parentheses. Here is a contrived example that uses a precompiled (
qr{ ...}) regular expression that also uses extended syntax, the
x, to allow comments and white space inside the expression.
use strict;
use warnings;
my @strings = (
q{catFiSHcake},
q{DogFISHcAkE},
q{cATfishCake},
q{caTFISHcaKE});
my $rxMixed = qr
{(?xi) # use extended syntax and
# make case insensitive
(?:cat|dog) # non-capture alternation
# of cat or dog
(?-i:FISH) # FISH, case sensitive
# inside parentheses
cake # cake, case insensitive
# again
};
foreach my $string ( @strings )
{
print
qq{$string: },
$string =~ $rxMixed
? qq{Match\n}
: qq{No match\n};
}
Here's the output.
catFiSHcake: No match
DogFISHcAkE: Match
cATfishCake: No match
caTFISHcaKE: Match
I hope this is of interest.
Cheers,
JohnGG
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.