正则表达式:为啥前后都匹配,合起来却不能匹配

nj0308 2021-02-20 02:46:20
我用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

请问为啥前面部分和后面部分分开能匹配上,而合起来却匹配不上了呢?
...全文
656 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
nj0308 2021-02-20
  • 打赏
  • 举报
回复
补充说明,ruby是支持正则表达式引用: > '1ad2' =~ /(\d)ad\1/ => nil > '2ad2' =~ /(\d)ad\1/ =>

6,720

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 Google技术社区
社区管理员
  • Google技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧