m/^ # Match the start of the line (\w) # Match the first letter, capture it in $1 (or \1 if you re-use it in the regex) ( # Open capturing group for $2 (?!\1) # Look ahead and verify that the next charachter isn't the same as the first one \w # Capture a word-charachter (because of the look ahead this can't be the same one as the first) ) # Close capture $2 \2 # Match the second charachter another time (no need to capture this) ( # Open capture $3 (?! # Open look-ahead \1 # Charachter 1 | # Or (don't use a charachter class, else you run in the same trouble as before) \2 # Charachter 2 ) # Close look-ahed \w # Match a word-charachter ) # Close capture $3 ... /x;