正则表达式:为啥前后都匹配,合起来却不能匹配
我用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
请问为啥前面部分和后面部分分开能匹配上,而合起来却匹配不上了呢?
前面部分:
> 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
请问为啥前面部分和后面部分分开能匹配上,而合起来却匹配不上了呢?
...全文
相关推荐
正则表达式个人学习总结
正则表达式学习的最好的教程,纯个人经验总结,适合初学者
Linux中基本正则表达式
主要介绍了Linux中基本正则表达式的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
PHP正则表达式入门教程(推荐)
正则表达式,大家在开发中应该是经常用到,现在很多开发语言都有正则表达式的应用。本文给大家介绍PHP正则表达式入门教程,感兴趣的朋友一起学习吧
正则表达式30分钟入门教程
如何使用本教程别被下面那些复杂的表达式吓倒,只要跟着我一步一 步来,你会发现正则表达式其实并没有你想像中的那么 困难。当然,如果你看完了这篇教程之后,发现自己明白 了很多,却又几乎什么都记不得,那也是很正常的——我 认为,没接触过正则表达式的人在看完这篇教程后,能把提到过的语法记住80%以上的可能性为零。这 里只是让你明白基本的原理,以后你还需要多练习,多使用,才能熟练掌握正则表达式。 除了作为入门教程之外,本文还试图成为可以在日常工作中使用的正则表达式语法参考手册。
linux查看匹配内容的前后几行方法
给大家分享了linux查看匹配内容的前后几行的方法以及实例代码,有兴趣的朋友可以参考学习下。


Google技术社区

