I guess by "pattern," I mean something different from how that word is defined in the Linux world. If you take $ to mean a letter (a-z) and # to mean a number (0-9), then the pattern I'm trying to match is as follows:
$$$##-####-###-###.jpg
I'd like to write a script that reads in a list of files line by line; such a list will be one where the greater number of the filenames, but by no means all of them, match that letter-number plus hyphen and extension pattern. The script finds and prints (to stdout or a text file) the names of the ones that do not conform to that pattern -- maybe there are only two (instead of three) numbers before the ".jpg"; maybe it's missing one of the 3-digit strings or the odd one is a number short; whatever the difference is, this would be the output. The ultimate purpose is to automate a renaming process (or rename the files by hand, using the generated list as a reference) to get all the files to match this letter-number-hyphen-extension sequence in their names. I hope I'm making sense here.
Can it be done in BASH? Or should I go looking elsewhere (Perl, Python, C++, etc.)?
Don't those need defined letters and numbers to start with? And maybe there's a binary or two I've yet to become acquainted with, but I've never come across a l/Unix command "reg".
rdcwayx is abbreviating "regular expression" as "reg".
rdcwayx is correctly suggesting that if you do a bit of searching around in these forums (using the search features) or research on the use of regular expressions, you will find the answer to your question quite easily.