in reply to Re^2: Regex for files
in thread Regex for files

Add a $ to the end of aaron_baugher's expression, like this: /^messages(\.\d*)?$/. Also note the change of the + to a *

Replies are listed 'Best First'.
Re^4: Regex for files
by aaron_baugher (Curate) on Apr 23, 2015 at 10:31 UTC

    Good catch on the $ anchor; thank you. Re-reading the original post, I see that either he clarified things or I missed the last sentence the first time I read it. In either case, I think this meets his needs as I now understand them:

    #!/usr/bin/env perl use 5.010; use strict; use warnings; while(<DATA>){ chomp; if( /^messages(\.|\.\d)?$/ ){ say "Match: $_"; } else { say "No match $_"; } } __DATA__ messages messages. messages.1 messages.txt messages.12345

    To the original poster: since the regex only allows "messages" to be followed by zero or one groupings of "dot" or "dot digit", extensions like ".txt" will not match, so you don't have to do anything special to eliminate them. I also dropped the + qualifier after the digit since you specified that only a single digit after the dot is acceptable.

    Aaron B.
    Available for small or large Perl jobs and *nix system administration; see my home node.

      The original is ambiguous on whether multiple digits are acceptable. If they are, then /^messages(\.|\.\d+)?$/ will work.