my $word_pat = qr /.../; my $non_word_pat = qr /.../; if (/word1${non_word_pat}(?:${word_pat}${non_word_pat}){0,4}word2/) { ... no more than 4 words between word1 and word2 ... }