50
(a|b)\1

What does \1 mean in this expression?

Tim Pietzcker
  • 328,213
  • 58
  • 503
  • 561
bitmapdata.com
  • 9,572
  • 5
  • 35
  • 43

2 Answers2

72

\1 - it means the first capturing group in the matched expression. \n would be the nth capturing group. (Note that \0 would be whole match). In many engines, the upperlimit for n is 9, but some support up to 99 as well.

When used in regex like (a|b)\1, it means that after a or b, the next character should be the first captured group, which is a or b so the regex here would match aa or bb.

manojlds
  • 290,304
  • 63
  • 469
  • 417
28

It refers to what was matched in the first set of parentheses, the first group. Subsequent number means subsequent parentheses.

(1|2)(3|4)\1\2

Would match:

1313
1414
2323
2424

Note that if you have nested groups, just count from the opening brace (left brace).

(groupOne(groupTwo)stillOne(groupThree(groupFour)))
sidyll
  • 57,726
  • 14
  • 108
  • 151