src*_*ulo 4 regex perl match closest
我正试图从最后一个项目壁橱到最后一个单词匹配.
例如,最接近狗的b
"abcbdog"
应该是"bdog"
但相反,我得到"bcbdog"
我怎样才能匹配"狗"之前的最后一次出现"b"
这是我目前的正则表达式:
/b.*?dog/si
Run Code Online (Sandbox Code Playgroud)
谢谢!
正则表达式想要从左到右但你想要从右到左,所以只需反转你的字符串,反转你的模式,然后反转匹配:
my $search_this = 'abcbdog';
my $item_name = 'dog';
my $find_closest = 'b';
my $pattern = reverse($item_name)
. '.*?'
. reverse($find_closest);
my $reversed = reverse($search_this);
$reversed =~ /$pattern/si;
my $what_matched = reverse($&);
print "$what_matched\n";
# prints bdog
Run Code Online (Sandbox Code Playgroud)