in reply to Matching Character Patterns With Backreferences
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
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Matching Character Patterns With Backreferences
by Anonymous Monk on Dec 05, 2004 at 23:49 UTC | |
by dimar (Curate) on Dec 06, 2004 at 05:55 UTC |