1. Is this using too many paren statements, or is this just per coder's discretion?I'd say it's too many groupings but it's similar to using parens in code to distinguish expressions, explicit and potentially confusing. Personally I'd simplify it to /C (?:800 | (?:35 | 29 )(?:50 | 00XL))/x. Also the regex doesn't do quite what you think - it matches C800 or (?:(?:35|29)(?:50|00XL)) (hence the slightly modified regex I presented).
2. This regex matches on 'C3550XL' and I'm not sure whyIt matches for the same reason that ABC3550DEF will match - the regex isn't anchored. So what you'll want is something like /\AC(?:800|(?:(?:35|29)(?:(?:50)|(?:00XL))))\z/ to get the expected match. See perlre for more info on \A and \z.
_________
broquaint
In reply to Re: A question of 'or' in a Regex
by broquaint
in thread A question of 'or' in a Regex
by c
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |