What's the meaning of a number after a backslash in a regular expression?

前端 未结 2 617
旧时难觅i
旧时难觅i 2020-11-30 07:20
(a|b)\\1

What does \\1 mean in this expression?

相关标签:
2条回答
  • 2020-11-30 07:45

    \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.

    0 讨论(0)
  • 2020-11-30 07:52

    If 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
    

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

    (groupOne(groupTwo)stillOne(groupThree(groupFour)))
    
    0 讨论(0)
提交回复
热议问题