Perl:如何将字符串的最后 n 位与 n 位或更多位连续数字相匹配?
Perl: How to match last n digits of a string with n consecutive digits or more?
我使用以下:
if ($content =~ /([0-9]{11})/) {
my $digits = ;
}
从字符串中提取 11 个连续数字。但是,它会获取前 11 个连续数字。我如何才能提取最后 11 个连续数字,以便从 hdjf95724555199361
?
的字符串中获取 24555199361
/([0-9]{11})/
表示
/^.*?([0-9]{11})/s # Minimal lead that allows a match.
让 .*
变得贪婪,你就能得到你想要的。
/^.*([0-9]{11})/s # Maximal lead that allows a match.
如果数字出现在字符串的最末尾,您还可以使用以下方法:
/([0-9]{11})\z/
每当您想匹配字符串末尾的内容时,请使用行尾锚点 $
。
$content =~ m/(\d{11})$/;
如果该模式不是最后一次,但您想要匹配该模式的“最后”出现,您将首先将“整个字符串”与 /.*/
匹配,然后回溯到最后一次出现的模式。 /s
标志允许 .
元字符匹配换行符。
$content =~ m/.*(\d{11})/s;
有关详细信息,请参阅 Perl regexp tutorial。
我使用以下:
if ($content =~ /([0-9]{11})/) {
my $digits = ;
}
从字符串中提取 11 个连续数字。但是,它会获取前 11 个连续数字。我如何才能提取最后 11 个连续数字,以便从 hdjf95724555199361
?
24555199361
/([0-9]{11})/
表示
/^.*?([0-9]{11})/s # Minimal lead that allows a match.
让 .*
变得贪婪,你就能得到你想要的。
/^.*([0-9]{11})/s # Maximal lead that allows a match.
如果数字出现在字符串的最末尾,您还可以使用以下方法:
/([0-9]{11})\z/
每当您想匹配字符串末尾的内容时,请使用行尾锚点 $
。
$content =~ m/(\d{11})$/;
如果该模式不是最后一次,但您想要匹配该模式的“最后”出现,您将首先将“整个字符串”与 /.*/
匹配,然后回溯到最后一次出现的模式。 /s
标志允许 .
元字符匹配换行符。
$content =~ m/.*(\d{11})/s;
有关详细信息,请参阅 Perl regexp tutorial。