正则表达式:为啥前后都匹配,合起来却不能匹配
我用ruby进行正则表达式匹配,过程如下:
前面部分:
> reg1 = %r{\A(//(.+)\n)?}
=> /\A(\/\/(.+)\n)?/
> reg1 =~ "//;\n"
=> 0
> $2
=> ";"
后面部分:
> reg2 = %r{\A(-?\d+([;|,|\n]-?\d+)*)\z}
=> /\A(-?\d+([;|,|\n]-?\d+)*)\z/
> reg2 =~ "1;3"
=> 0
合起来:
> reg = %r{\A(//(.+)\n)?(-?\d+([\2|,|\n]-?\d+)*)\z}
=> /\A(\/\/(.+)\n)?(-?\d+([\2|,|\n]-?\d+)*)\z/
> reg =~ "//;\n1;3"
=> nil
请问为啥前面部分和后面部分分开能匹配上,而合起来却匹配不上了呢?