Now that you have a human readable description of your file name, it's quite straight forward to translate it into a regular expression (at least in this case ;)
must start with
The caret (^
) anchors a regular expression to the beginning of what you want to match, so your re has to start with this symbol.
'b',
Any non-special character in your re will match literally, so you just use "b" for this part: ^b
.
followed by [...] digits,
This depends a bit on which flavor of re you use:
The most general way of expressing this is to use brackets ([]
). Those mean "match any one of the characters listed within. [ASDF]
for example would match either A
or S
or D
or F
, [0-9]
would match anything between 0 and 9.
Your re library probably has a shortcut for "any digit". In sed
and awk
you could use [[:digit:]]
[sic!], in python and many other languages you can use \d
.
So now your re reads ^b\d
.
followed by three [...]
The most simple way to express this would be to just repeat the atom three times like this: \d\d\d
.
Again your language might provide a shortcut: braces ({}
). Sometimes you would have to escape them with a backslash (if you are using sed or awk, read about "extended regular expressions"). They also give you a way to say "at least x, but no more than y occurances of the previous atom": {x,y}
.
No you have: ^b\d{3}
followed by 'cv',
Literall matching again, now we have ^b\d{3}cv
followed by two digits,
We already covered this: ^b\d{3}cv\d{2}
.
then an underscore, followed by 'release', followed by .'ext'
Again, this should all match literally, but the dot (.
) is a special character. This means you have to escape it with a backslash: ^\d{3}cv\d{2}_release\.ext
Leaving out the backslash would mean that a filename like "b410cv11_test_ext" would also match, which may or may not be a problem for you.
Finally, if you want to guarantee that there is nothing else following ".ext", anchor the re to the end of the thing to match, use the dollar sign ($
).
Thus the complete regular expression for your specific problem would be:
^b\d{3}cv\d{2}_release\.ext$
Easy.
Whatever language or library you use, there has to be a reference somewhere in the documentation that will show you what the exact syntax in your case should be. Once you have learned to break down the problem into a suitable description, understanding the more advanced constructs will come to you step by step.