in reply to Matching brackets in Regular Expression

Never forget that regex matching is REGEX matching, NOT string matching. The difference becomes very important in cases like yours where the string contains characters that have a special meaning for regex. So what you actually need is to convert a given string to a regular expression that matches that string.

In perl this is done using quotemeta, which you can also do using \Q...\E to make it happen on the enclosed string. You can drop the final \E if it coincides with the string end.

The .* at the beginning and end are useless (even if you use $&, you can just use the whole string there instead supposing it's still unchanged). And once these are gone, the s modifier becomes useless too.

So in the end you get:

if ($text =~ /\Q$stub/) { # Do something }

Or, since you are basically just looking for a substring, you can use index:

if (index($text, $stub) >= 0) { # Do something }

Replies are listed 'Best First'.
Re: Re: Matching brackets in Regular Expression
by melora (Scribe) on Nov 21, 2003 at 14:24 UTC
    Yeah,
    if (index($text, $stub) >= 0) { # Do something }
    was just what I was going to suggest. A regex may simply be too much of a tool. I've often wished I had a little electric typewriter for addressing envelopes, rather than going through monkeyshines trying to print envelopes and get the orientation, etc., correct. Simplest is best, sometimes.