Here's the subset of regular expressions that has gotten me through nearly all of the regular expressions I've ever needed to write. As a plus, it has no dependencies!
* - zero or more of the preceding character/group
+ - one or more of the preceding character/group
? - zero or one of the preceding character/group
$ - end of line
^ - beginning of line
. - one of any one character
\ - escape the following character (for a literal '$' or '.', for example)
[<some characters>] - one of the given characters
[a-zA-Z0-9] - letters and numbers inside a group can have ranges!
(<something>) - capturing group (anything that matches inside it will be accessible in the match object)
<thing1>|<thing2> - either the first thing, or the second thing (or the third, or the fourth...)
This isn't a complete, or even precise, definition, but knowing those things will get you to the point where you can read and write expressions like this:
^(-|+)?[0-9]*\.[0-9]+$
which matches things like -.2, 0.123, +0.1, etc. (floating point numbers, basically). This likely has bugs, since I haven't tested it ;)