我有一个字符串,其中包含"foo"后跟数字.我想在字符串中的最后一个foo后打印数字.我被告知,实现这一目标的唯一方法是扭转字符串本身.这不是很优雅,我很惊讶Perl没有更好的方法来完成工作.有没有比这更好的方法呢?
#!/usr/bin/perl
# works, but is ugly!!!
$string = "foo1 foo3 foo5 bar foo911 baz";
$string = scalar reverse($string);
$string =~ m/(\d+)oof/;
print scalar reverse("$1");
Run Code Online (Sandbox Code Playgroud)
Can*_*ice 14
怎么样:
$string =~ /.*foo(\d+)/;
Run Code Online (Sandbox Code Playgroud)
澄清:
$string =~ /.* # Match any character zero or more times, greedily.
foo # Match 'foo'
(\d+) # Match and capture one or more digits.
/x;
Run Code Online (Sandbox Code Playgroud)
贪婪的"任何角色"匹配将匹配字符串中的第一个"foo",并且您将只留下匹配最后一个"foo".
例:
#!perl -w
use strict;
use 5.010;
my $string = "foo1 foo2 foo3";
$string =~ /.*foo(\d+)/;
say $1;
Run Code Online (Sandbox Code Playgroud)
输出:
% perl regex.pl
3
Run Code Online (Sandbox Code Playgroud)