actually we might be able to build a general guideline type thread.
So here's my

regex itself is not hard. its just a replacement language. simply put, you are using codes to represent longer strings. like a hash.
so in essence you are trying to find patterns within sets of strings.
the way i deal with it is probably similar to most. I first determine what i am intending to do. find a pattern to mark the beginning of a string i want to capture? replacement? validation?
then i analyze the data i have to work with. for example, if its phone numbers from a database, which i want to validate I look at random samplings of the data.
I might see
8781239870
(444)1279790
(024) 123 1234
123.123.1422
123-123-1234
etc
etc
one of the biggest difficulties with regex is seeing all possibilities of a pattern or result. creating the regex pattern is usually then just a matter of replacing the elements of the patter that are the same within all datasets, or at least non-exclusive of a valid result.
for example an american phone number should never have a letter in it, except after at least the 7th character
1231234x204 no area code, with an extension.
the codes quite frankly are a very short list, and not worth worrying about memorizing, since you will just through use. But the challenge is in making the mental switch to pattern recognition.
the best way to learn it though is by doing, as usual.