免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3598 | 回复: 11
打印 上一主题 下一主题

perl正则小问 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-05-03 00:45 |只看该作者 |倒序浏览
看语言入门那本 有些问题没看懂 请指教

1

模式分组
单看下面的有区别吗
  1. /fred+/
  2. /(fred)+/
复制代码
2

这个-1怎么解释呢 看书说是相对位置
  1. $_='aa11bb';
  2. if(/(.)\g{-1}11/)
  3. {
  4.         print "it matched!\n";
  5. }
复制代码

论坛徽章:
0
2 [报告]
发表于 2011-05-03 00:50 |只看该作者
1. 当然有区别,一个匹配freddddd一个匹配fredfredfred
就是通过\g{-1} 来引用前一个模式分组
比如 /(fred|buck) is not \g{-1}/匹配 fred is not fred和buck is not buck
/(one bracket)(another bracket) .* \g{-2}/ 引用的第一个分组

论坛徽章:
0
3 [报告]
发表于 2011-05-03 22:40 |只看该作者
1. 当然有区别,一个匹配freddddd一个匹配fredfredfred
就是通过\g{-1} 来引用前一个模式分组
比如 /(fre ...
ustbleetom 发表于 2011-05-03 00:50



书上也是这么说的/fred+/不能说匹配freddd吧 应该说他匹配两者吧 freddddd  fredfredfred 而 /(fred)+/只匹配fredfredfred 这样说对吗??

\g{-1} 这个怎么解释? 他和1的有什么区别

多谢

论坛徽章:
0
4 [报告]
发表于 2011-05-03 22:43 |只看该作者
书上说-1是相对反向引用 怎么个相对法  谢谢

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
5 [报告]
发表于 2011-05-03 22:46 |只看该作者
楼主先不要理 \g 什么的,以前没 \g 也活的好好的,先搞清楚 + () 这些基础啊

论坛徽章:
0
6 [报告]
发表于 2011-05-03 22:55 |只看该作者
回复 4# 落羽飘寻


    第一个说错了
/fred+/ 和/(fred)+/ 因为+ 可以匹配1次及以上,所以这两个都可以匹配 freddd fredfred, 因为只要有fred就可以匹配。但是第一个的+是指的d而第二个的+是指(fred)。这种问题自己写代码看一下不就可以了。

第二个-1是从此处往前数。

论坛徽章:
0
7 [报告]
发表于 2011-05-04 08:19 |只看该作者
学习正则,我觉得还是应该循序渐进从基础一步步学起。
如果先拿来用,有不明白的地方再到处找资料,这种方式不适合学习正则,因为正则的特点就是杂且各种符号标记很多,这种方式会造成囫囵吞枣,永远对正则一知半解。

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
8 [报告]
发表于 2011-05-04 09:22 |只看该作者
本帖最后由 jason680 于 2011-05-04 09:26 编辑
看语言入门那本 有些问题没看懂 请指教

1

模式分组
单看下面的有区别吗2

这个-1怎么解释呢 看书说 ...
落羽飘寻 发表于 2011-05-03 00:45


个人理解
1. 符号(代号)与数量词
   x, abc, 123, . 均为符号
   ?, * , + , {n,m} 可用在数量词

  fred+与(fred)+之差异在"数量词"作用于"符号"范围不同之差异
  fred+ 之 +(数量词)仅作用于d上
  fred+ 可视为 "fre" 加上 "d"{1,N}
  (fred)+ 可视为 "fred"{1,N}
  
  则fred+可匹配fred(数量词"+"=1), fredd("+"=2), freddd("+"=3)
  则(fred)+可匹配fred(数量词"+"=1), fredfred("+"=2), fredfredfred("+"=3)
  
  当数量词"+"为1时, fred+及(fred)+均为fred
  但其他则不同....

论坛徽章:
0
9 [报告]
发表于 2011-05-05 00:29 |只看该作者
回复 7# 2gua

谢谢版主 不过我就是看的书啊 一点一点看得 呵呵 不过这块没看懂 -1这个书上解释的不清楚 多谢指教

论坛徽章:
0
10 [报告]
发表于 2011-05-05 00:30 |只看该作者
回复 8# jason680


    明白了 多谢jason兄
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP