Perl 正则表达式查找任何 5 的倍数的数字。
我尝试使用=~ /[5]+/
,但它只找到包含 5 的数字,但不是 5 的倍数。
并且还要找到长度是 5 的倍数的字符串。
5 的倍数以 5 或 0 结尾。
尝试使用/^-?\d*[05]$/
,这意味着:
^
字符串的开头(saflknfvs34535 不起作用)。-?
是否为减号(如果您只想要正数,请不要输入)。\d*
数字,任何数字。[05]
0 或 5。$
字符串结尾(324655sefgsfgsfg 不会工作)。对于整数,
($_ % 5) == 0
或者
!($_ % 5)
这些数字将以0
or结尾5
,因此类似于m/^\d*[05]$/
我会回答你的第二个问题:还要找到长度为 5 的倍数的字符串。
这比数字部分(已回答)更适合正则表达式,只需将 5 个字符分组并匹配它们的倍数
^(?:.{5})*$
^
并$
匹配字符串的开头和结尾。
.{5}
匹配 5 个字符(不使用s
修饰符时的换行符除外)
(?:.{5})*
重复组的内部 0 次或更多次 ==> 这也将匹配空字符串!如果您不想要这个并且仅从长度至少为 5 的字符串开始,请使用+
量词表示 1 或更多:^(?:.{5})+$
只是为了好玩,这里有一个适用于任何除数的更通用的解决方案:
use 5.010;
"150" =~ /^(\d+)(?(?{ $^N % 5 == 0 })|(*FAIL))$/;