Perl 使用多个@符号标识行
给定一个输入,例如(但不总是以这种精确的格式) an@example.commailto:an@example.com 测试一行是否存在多个@符号的最有效方法是什么Perl 使用多个@符号标识行,perl,Perl,给定一个输入,例如(但不总是以这种精确的格式) an@example.commailto:an@example.com 测试一行是否存在多个@符号的最有效方法是什么 if ( $str =~ /@.*@/ ) 将匹配任何具有@后跟任意数量字符(甚至零)的行,然后匹配@对字符串中的字符进行计数的标准方法是使用tr// 像这样 use strict; use warnings; use 5.010; my $s = 'an@example.commailto:an@example.com';
if ( $str =~ /@.*@/ )
将匹配任何具有
@
后跟任意数量字符(甚至零)的行,然后匹配@
对字符串中的字符进行计数的标准方法是使用tr//
像这样
use strict;
use warnings;
use 5.010;
my $s = 'an@example.commailto:an@example.com';
my $n = $s =~ tr/@//;
say $n;
输出
2
这样你就可以写作了
if ( $s =~ tr/@// > 1 ) {
# do stuff
}
/.*.@/
或/[^@\n]*.@/
(或/.*.@/s
或/[^@]*/
,如果OP的真正意思是测试字符串,而不是测试一行)@ysth:我看不出非贪婪修饰符有什么帮助。@Borodin:它不会改变是否有匹配项,但它确实使它更有效,我看不出这个问题是如何在“过于宽泛”的基础上结束的。有多少种解释?!确切地这是一个非常具体的问题,我有一个非常具体的字符串示例!谢谢你所有的肯定回答。