You want a "negative lookahead":

use warnings; use strict; while(<DATA>){ print if / cat # word cat (?: # do not capture (?! # negative lookahead \s* # possible whitespace dog # the word dog ) # end negative lookahead ) # end do not capture group /x; # /cat(?:(?!\s*dog))/ } __DATA__ my cat loves dogs catdog cat dog dog dog dog cat dog dog cat not a dog

Output:

my cat loves dogs dog cat not a dog

Note that the above will also match things like cat doggle, so if you *only* want it to match the word "dog", you'll have to put a boundary at the end of that word in the regex.

Update: AnomalousMonk pointed out below that the non-capture portion is not required here. For posterity, I'll leave it in (unless someone advises it'd be best to remove). So essentially, the second and last lines in the regex above are not needed.


In reply to Re: search for 'cat' not followed by 'dog' by stevieb
in thread search for 'cat' not followed by 'dog' by b4swine

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.