Perl 使用多个@符号标识行

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';

给定一个输入,例如(但不总是以这种精确的格式)

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:它不会改变是否有匹配项,但它确实使它更有效,我看不出这个问题是如何在“过于宽泛”的基础上结束的。有多少种解释?!确切地这是一个非常具体的问题,我有一个非常具体的字符串示例!谢谢你所有的肯定回答。