Regex 修剪字符串值

Regex 修剪字符串值,regex,perl,Regex,Perl,我试图在Perl中执行PHP左修剪 我有以下字符串值: user1/es/public_html/shop/images/banners/326583.jpg 我需要从'/shop'的左侧修剪所有内容,因此我的字符串值如下所示: /shop/images/banners/326583.jpg 我有以下删除空白的方法,这里是将“user1/eschemtrad/public_html”应用于注册表的最佳解决方案吗 my $image = $banners[$i]{'imageloc'};

我试图在Perl中执行PHP左修剪

我有以下字符串值:

user1/es/public_html/shop/images/banners/326583.jpg
我需要从'/shop'的左侧修剪所有内容,因此我的字符串值如下所示:

/shop/images/banners/326583.jpg
我有以下删除空白的方法,这里是将“user1/eschemtrad/public_html”应用于注册表的最佳解决方案吗

my $image = $banners[$i]{'imageloc'};

   $image =~ s/\s+$//;

像这样的东西应该可以做到:

my $str = "user1/es/public_html/shop/images/banners/326583.jpg";
$str =~ s|.*(?=/shop/)||;
print $str; #
输出:

/shop/images/banners/326583.jpg

像这样的东西应该可以做到:

my $str = "user1/es/public_html/shop/images/banners/326583.jpg";
$str =~ s|.*(?=/shop/)||;
print $str; #
输出:

/shop/images/banners/326583.jpg

最明显的解决方案是从
/shop
开始捕获您想要的零件。注意,我使用大括号
{}
而不是默认的斜杠来分隔正则表达式,这样我就不必在模式中转义斜杠

use v5.14;

my $s = 'user1/es/public_html/shop/images/banners/326583.jpg';

say my ($trimmed) = $s =~ m{(/shop.*)};
输出
最明显的解决方案是从
/shop
开始捕获您想要的零件。注意,我使用大括号
{}
而不是默认的斜杠来分隔正则表达式,这样我就不必在模式中转义斜杠

use v5.14;

my $s = 'user1/es/public_html/shop/images/banners/326583.jpg';

say my ($trimmed) = $s =~ m{(/shop.*)};
输出
如果您不需要正则表达式引擎的全部功能,而且在本例中似乎不需要,那么您可以使用和:


如果您不需要正则表达式引擎的全部功能,而且在本例中似乎不需要,那么您可以使用和:


谢谢,我是Perl新手。“v5.14”的用途是什么;它强制执行某些perl版本,并启用功能。在这种情况下,
say
-这类似于
print
,但它会自动添加换行。@Liam:doumentation是。对于Perl5版本14可用的所有特性,它相当于
使用strict
使用feature
。我在这里使用它主要是作为
使用strict
使用feature'say'
的简写。如果它是一个完整的程序,那么我会明确地添加这些需求。我是Perl新手。“v5.14”的用途是什么;它强制执行某些perl版本,并启用功能。在这种情况下,
say
-这类似于
print
,但它会自动添加换行。@Liam:doumentation是。对于Perl5版本14可用的所有特性,它相当于
使用strict
使用feature
。我在这里使用它主要是作为
使用strict
使用feature'say'
的简写。如果它是一个完整的程序,那么我会明确地添加这些需求。
s/\s+$/
是一个正确的微调。值得注意的是,这在PHP中也不是微调。在大多数语言中,“trim”表示从字符串的开头、结尾或两者都去除空白。请在PHP中显示要模拟的左trim
s/\s+$/
是右trim。值得注意的是,这在PHP中也不是trim。在大多数语言中,“trim”意味着从字符串的开头、结尾或两者都去除空白。请在PHP中显示要模拟的左侧trim