当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 5 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [问题]一道Perl关于正则表达式的习题.
帖子发表于 : 2008-01-21 10:16 

注册: 2007-04-12 14:48
帖子: 2
送出感谢: 0 次
接收感谢: 0 次
写一个程序,输出有一个字母大写,而非所有字母都大写的行。它能匹配Fred,而不匹配 fred和 FRED吗?


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-01-21 11:08 

注册: 2006-07-09 12:22
帖子: 1331
地址: 南京
送出感谢: 0 次
接收感谢: 1
阅读一些正则表达式文档先~~~


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-01-21 11:19 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
/[yY][eE][sS]/; # match 'yes' in a case-insensitive way
# 'yes', 'Yes', 'YES', etc.
/yes/i; # also match 'yes' in a case-insensitive way

看那i


_________________
● 鸣学


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-01-22 2:42 

注册: 2006-05-01 12:29
帖子: 60
地址: zju
送出感谢: 0 次
接收感谢: 0 次
#!/usr/bin/perl
use strict;
use warnings;
open my $file, "<", "data" or die "fail to open $!";
while (<$file>) {
my $match = () = m/([A-Z])/g;
print if ( $match == 1 );
}



kernel@fairland:~/perl$ cat data
fred
Fred
FRED
paul
囗囗囗囗
囗囗囗囗



运行结果


kernel@fairland:~/perl$ ./first
Fred
囗囗囗囗


最关键的就是这一行
my $match = () = m/([A-Z])/g;

在列表上下文中m/([A-Z])/g返回所有匹配的大写字母
()仅仅是用于提供一个空的列表环境
在标量上下文my $match中,数组()返回的是数组中元素的数目$#+1
所以这一句的作用就是用于计算一行中大写字母的数目
写的清晰一点就是
my @matched = $_ =~ m/([A-Z)/g;
my $number = @matched;


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-01-22 8:28 

注册: 2007-04-12 14:48
帖子: 2
送出感谢: 0 次
接收感谢: 0 次
heejun 写道:
#!/usr/bin/perl
use strict;
use warnings;
open my $file, "<", "data" or die "fail to open $!";
while (<$file>) {
my $match = () = m/([A-Z])/g;
print if ( $match == 1 );
}



kernel@fairland:~/perl$ cat data
fred
Fred
FRED
paul
囗囗囗囗
囗囗囗囗



运行结果


kernel@fairland:~/perl$ ./first
Fred
囗囗囗囗


最关键的就是这一行
my $match = () = m/([A-Z])/g;

在列表上下文中m/([A-Z])/g返回所有匹配的大写字母
()仅仅是用于提供一个空的列表环境
在标量上下文my $match中,数组()返回的是数组中元素的数目$#+1
所以这一句的作用就是用于计算一行中大写字母的数目
写的清晰一点就是
my @matched = $_ =~ m/([A-Z)/g;
my $number = @matched;


说的太好了,很详细,谢谢了


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 5 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译