请问匹配一个字符在一定区间中怎么写啊?



QUOTE:
原帖由 __lxmxn__ 于 2008-7-24 08:27 发表
Nothing is impossible ^_^

确实是 FLW那个思想
3Q 研究下断言先
my $str = " aaaaa ";
print $str;
if ( $str =~ /[^a]a{5,10}[^a]/) {
        print "\nOK!";
}
else {
        print "\nNot mapped!";
}

aaaaa
OK!


QUOTE:
原帖由 hfahe 于 2008-7-24 09:36 发表
my $str = " aaaaa ";
print $str;
if ( $str =~ /[^a]a{5,10}[^a]/) {
        print "\nOK!";
}
else {
        print "\nNot mapped!";
}

aaaaa
OK!

不行的哦
你试试 $_= aaaaa sdjf aaaaaaa ;
输出的是  aaaaa sdjf aaaaaaa
OK!
中间的sdjf也出来了 这可是不需要的部分哦


QUOTE:
原帖由 guijia8427 于 2008-7-24 09:47 发表

不行的哦
你试试 $_= aaaaa sdjf aaaaaaa ;
输出的是  aaaaa sdjf aaaaaaa
OK!
中间的sdjf也出来了 这可是不需要的部分哦

?
你需要捕获?
你原来的例子里不是原样输出一遍$str么


QUOTE:
原帖由 hfahe 于 2008-7-24 10:17 发表

?
你需要捕获?
你原来的例子里不是原样输出一遍$str么

恩 是滴是滴 没看到print
恩 是需要捕获的
请问匹配里面的向前否定断言和向后否定断言是否有顺序一说
我如果把向后否定放在后面好像就不能匹配,像这样

chomp(my $str = <STDIN>);
$str =~ /(?!a)a{5,10}(?<!a)/ ? print "Yes, mapped.\n" : print "Not mapped!\n";