假设我在文本文件中有以下字符串:
hello my name is /yellow/duck
我想知道是否有一个函数可以在该字符串上运行并返回“ yellow ”。
我知道Perl有一个通配符变量.
,但我不确定它是否适用于此,因为我的知识有限,你只能将单词归因于.
。
答案 0 :(得分:2)
我知道perl(sic)有一个通配符变量
.
Perl没有这样的“通配符变量”。您可能在正则表达式模式中指的是.
的含义:
.
匹配除换行符之外的任何单个字符(除非使用/s
)
记录在perldoc perlre
。
Prima facie 你的问题毫无意义。但是,在这些行之间阅读,你似乎在问是否有办法匹配两个/
个字符之间的任何字符序列。
my $x = "hello my name is /yellow/duck";
if ($x =~ m{/ ( [^/]+ ) /}x) {
print "$1\n";
}
您可以通过阅读计算机上的perldoc perlre
来了解正则表达式匹配。另请参阅perldoc perlreref
和perldoc perlretut
。
如果没有学习,你就无法学习编程。与其他语言相比,Perl的主要优势之一是分发中包含大量有用的文档。您应该至少阅读一次所有内容,并在每次机会时再回头查看。请参阅perldoc perltoc
。
拥有decent book也没有伤害。
答案 1 :(得分:0)
我想知道是否有一个函数可以在该字符串上运行并返回"黄色"。
my $s = 'hello my name is /yellow/duck';
print func($s), "\n";
sub func { 'yellow' }
是的,这个"回答"是滑稽的,但它有一些严重和重要的意义
在指定,实施和记录软件时,您必须绝对精确。它与普通人类语言完全不同
仅仅因为一个程序产生了'#34;正确的结果"它并不意味着它是正确的