免费注册 查看新帖 |

Chinaunix

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

初学perl 被一简单的程序困惑 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-31 10:42 |只看该作者 |倒序浏览
本人初学perl 被一简单的程序困惑 还请同志们指点

写一个模式,它能匹配$what 当前的内容的3 份连续拷贝。也就是说,如果$what 为fred
,则此模式能匹配fredfredfred。
如果$what 为fred|barney,则此模式能匹配fredfredbarney, barneyfredfred, barneyb
arneybarney,或者其它的变种。(提示:
你应当在程序的顶端设置$what 的值,如my $what = ‘fred|barney’;)


我写的代码是:
#!usr/bin/perl
use warnings;
use strict;
my $what = 'fred';
$what =~ s/$what{3}/$what;
print "$what.\n";

总是报错:Substitution replacement not terminated at ex9_1 line 5.

不太知道究竟是哪个地方写错了

论坛徽章:
0
2 [报告]
发表于 2008-07-31 10:45 |只看该作者
原帖由 308happy 于 2008-7-31 10:42 发表
本人初学perl 被一简单的程序困惑 还请同志们指点

写一个模式,它能匹配$what 当前的内容的3 份连续拷贝。也就是说,如果$what 为fred
,则此模式能匹配fredfredfred。
如果$what 为fred|barney,则此模式 ...

哈哈哈 我知道这是小骆驼上的练习题

论坛徽章:
0
3 [报告]
发表于 2008-07-31 10:52 |只看该作者
呵呵 是啊 不过答案就一行代码 不明白啊

论坛徽章:
0
4 [报告]
发表于 2008-07-31 10:57 |只看该作者
原帖由 308happy 于 2008-7-31 10:52 发表
呵呵 是啊 不过答案就一行代码 不明白啊

有答案么 没看到 写出来看看

论坛徽章:
0
5 [报告]
发表于 2008-07-31 10:58 |只看该作者
答案写的是
/($what){3}/

论坛徽章:
0
6 [报告]
发表于 2008-07-31 11:02 |只看该作者
原帖由 308happy 于 2008-7-31 10:58 发表
答案写的是
/($what){3}/

呵呵 我也挺好奇 为啥你的 $what =~ s/$what{3}/$what; 后面为啥要多个$what

论坛徽章:
0
7 [报告]
发表于 2008-07-31 11:07 |只看该作者
我就是想用替换 把之前的$what替换成$what{3}
不过就是用答案的这个 我还是没运行成功的
还请guijia8427 指点~

论坛徽章:
0
8 [报告]
发表于 2008-07-31 11:09 |只看该作者
在替换部分可使用模式次序变量$n,如$n,如s/(\d+)/[$1]/,但在替换部分不支持模式的特殊字符,如{},*,+等

论坛徽章:
0
9 [报告]
发表于 2008-07-31 11:20 |只看该作者
原帖由 308happy 于 2008-7-31 11:07 发表
我就是想用替换 把之前的$what替换成$what{3}
不过就是用答案的这个 我还是没运行成功的
还请guijia8427 指点~

$str =~/($what){3}/;   可以啊  我试过行啊
#!/usr/bin/perl
use warnings;
use strict;
my $str="fredfredfreddkkd";
my $what = 'fred';
$str =~/($what){3}/;
print $&;

输出
fredfredfred

[ 本帖最后由 guijia8427 于 2008-7-31 11:22 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2008-07-31 11:20 |只看该作者
(A|B){1,3}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP