正则为什么没有提取出来正确的匹配?
时间:2010-10-06
来源:互联网
- use strict;
- use warnings;
-
- main(@ARGV);
-
- sub main
- {
- my $line;
- open FH,"x.txt";
- while ($line=<FH>){
- $line=~/(^[a-z]4)/;
- print $line;
- }
- close FH;
- }
- sub message
- {
- my $m=shift or return;
- print "$m\n";
- }
cat x.txt
- the
- thel
- 1
- 12345
the
thel
1
12345
作者: laohuanggua 发布时间: 2010-10-06
我想输出用俩个字母开头的行
use strict;
use warnings;
main(@ARGV);
sub main
{
my $line;
open FH,"x.txt";
while (<FH>){
/(^[a-z]2)/;
print $1 if $1;
}
close FH;
}
sub message
{
my $m=shift or return;
print "$m\n";
}
结果是空的!
use strict;
use warnings;
main(@ARGV);
sub main
{
my $line;
open FH,"x.txt";
while (<FH>){
/(^[a-z]2)/;
print $1 if $1;
}
close FH;
}
sub message
{
my $m=shift or return;
print "$m\n";
}
结果是空的!
作者: laohuanggua 发布时间: 2010-10-06
QUOTE:
我想输出用俩个字母开头的行
$ perl -Mstrict -e '
my $str = "the
thel
1
12345";
open my $fd,"<",\$str or die $!;
while(<$fd>) {
next unless /^[a-zA-Z]{2}/;
print;
}
close $fd '
the
thel
作者: 兰花仙子 发布时间: 2010-10-06
多谢版主!
原来是/^[a-z]{2}/。
open居然可以打开字符串!perl很给力啊~~~
原来是/^[a-z]{2}/。
open居然可以打开字符串!perl很给力啊~~~
作者: laohuanggua 发布时间: 2010-10-06
print $line if $line=~/(^[a-z]4)/;
原来的错误在于,你只进行了匹配测试,而没有根据测试结果就进行了输出,这样不论匹不匹配都会输出的。
原来的错误在于,你只进行了匹配测试,而没有根据测试结果就进行了输出,这样不论匹不匹配都会输出的。
作者: bruclan 发布时间: 2010-10-06
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28