#! perl -slw use strict; while( ) { chomp; print if m[ \bC # Starting with C preceeded by a non-\w char (?: # and either 800 # 800 | # or (?: 29 | 35 ) # 29 or 35 (?: # and (?: 50(?!XL) ) # 50 not followed by XL | # or (?: 00XL ) # 00XL ) )\b # followed by a word break ]x; } __DATA__ This is the spec for the ABC800. This device is a This is the spec for the C800. This device is a This is the spec for the C2900. This device is a This is the spec for the C2950. This device is a This is the spec for the C2900XL. This device is a This is the spec for the C2950XL. This device is a This is the spec for the C3500. This device is a This is the spec for the C3550. This device is a This is the spec for the C3500XL. This device is a This is the spec for the C3500XLM. This device is a This is the spec for the C3550XL. This device is a __OUTPUT__ D:\Perl\test>junk This is the spec for the C800. This device is a This is the spec for the C2950. This device is a This is the spec for the C2900XL. This device is a This is the spec for the C3550. This device is a This is the spec for the C3500XL. This device is a