If your strings are stand-alone, then using anchors (\A & \Z (or ^ & $ unless your using the /m option)) will work fine, but if your trying to detect matches for this regex within the context of a larger string, then you can acheive this using a few zero-width assertions.
#! perl -slw use strict; while( <DATA> ) { 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
In reply to Re: A question of 'or' in a Regex
by BrowserUk
in thread A question of 'or' in a Regex
by c
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |