我是perl的新手,编写我的第几个程序并使用它的模式匹配功能。我读入文件到阵列是这样的:在perl模式匹配..如何从模式中排除 n字符
@list=<file>
然后通过$列表[0..9]等,并且当我匹配一个图案,所述$list[0]
包括\n
字符,因此索引阵列的每一行比赛失败。因此,如果($string =~ $list[0])
虽然没有\n
字符,但它会匹配。
如何告诉模式匹配器不考虑模式中的\n
字符?
感谢
我是perl的新手,编写我的第几个程序并使用它的模式匹配功能。我读入文件到阵列是这样的:在perl模式匹配..如何从模式中排除 n字符
@list=<file>
然后通过$列表[0..9]等,并且当我匹配一个图案,所述$list[0]
包括\n
字符,因此索引阵列的每一行比赛失败。因此,如果($string =~ $list[0])
虽然没有\n
字符,但它会匹配。
如何告诉模式匹配器不考虑模式中的\n
字符?
感谢
如果你想删除您行你可以在\n
:
chomp $list[0]
看到perldoc -f chomp
的细节。
这将匹配与\n
:
if ($list[0] =~ "$string\n")
或者,如果你想成\ n是可选:
if ($list[0] =~ /$string\n?/)
这是一个很好的机会去了解Perl如何模块的工作。
例如,您可以使用Perl6::Slurp这将既a)解析文件b)将内容放入数组c)为您删除换行符。
例如:
use Perl6::Slurp;
my @lines = slurp '<:utf8', 'filename', {chomp=>"\n"}
一个典型的正则表达式将不考虑默认的换行符。例如,'/ foo /'或甚至'/^foo $ /'。告诉我们你的正则表达式。否则,我们可以给出的唯一建议是(1)从字符串中删除换行符,或者(2)向正则表达式添加换行符。 – FMc