The problem is that [^\1] is interpreted as [^\001] and \001 means ascii charachter 1 in octal format.
A correct regex would be: (using look-aheads):
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 ca +pture 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;
The complete regex would be (tested against LOOKED and SEEMED):
m/^ (\w) ((?!\1)\w)\2 ((?!\1|\2)\w) ((?!\1|\2|\3)\w) ((?!\1|\2|\3|\4)\w) \s$/x
x-modifier is used to make the groups a little bit more visible
In reply to Re: Matching Character Patterns With Backreferences
by Anonymous Monk
in thread Matching Character Patterns With Backreferences
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |