我有一个字符串,其中包含后跟数字的“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");
最佳答案
怎么样:
$string =~ /.*foo(\d+)/;
澄清:
$string =~ /.* # Match any character zero or more times, greedily.
foo # Match 'foo'
(\d+) # Match and capture one or more digits.
/x;
贪婪的“任何字符”匹配将匹配字符串中的第一个“foo”,而您将只匹配最后一个“foo”。
例子:
#!perl -w
use strict;
use 5.010;
my $string = "foo1 foo2 foo3";
$string =~ /.*foo(\d+)/;
say $1;
输出:
% perl regex.pl
3
关于regex - 反向正则表达式搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3876896/