Consider the following regular expressions
letter = a + b + c + d LETTER = A + B + C + D digit = 4+5+6+7+9 R1 = (LETTER + digit + !) • (letter • digit)∗• (letter + digit) R2 = (LETTER + digit + ?) • (letter + digit)∗• (LETTER + digit) R3 = (digit + ? + !) • (letter∗• digit∗)∗• (LETTER + letter) R4 = (digit • letter + ? + !) • (letter∗• digit∗) • (LETTER)
I'm not sure what some of the characters mean ('+' , '•' , '*')?
Do I read regex backwards when check if a string is an element of L(R1)?
FOR EXAMPLE: !5aA ELEMENT/NOT ELEMENT L(R1) R1 = (LETTER + digit + !) • (letter • digit)∗• (letter + digit) !5aA is an element of L(R1) I would think, but that's just a guess.
If someone can point me in the right direction to read a regex like this it would be greatly appreciated.
EDIT: So after considering Yuval answer this starts to make a whole lot of sense to me so thank you. It seems like the correct language for the string !5aA is L(R3) AND/OR L(R4) not sure which exactly yet, maybe its both. I like to think the + as OR's (not multiples) the • as a concatenation (or no concatenations) and * as all combinations. Treating • as multiplication using the commutative property holds true, makes sense for the order of the chars.