Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery

Re: Matching brackets in Regular Expression

by thospel (Hermit)
on Nov 21, 2003 at 06:45 UTC ( #308817=note: print w/replies, xml ) Need Help??

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
    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.

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://308817]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (1)
As of 2023-09-28 05:37 GMT
Find Nodes?
    Voting Booth?

    No recent polls found