如何在perl中删除行尾直到特定字符的字符

如何在perl中删除行尾直到特定字符的字符

我的字符串就像

$varin="wer.try.iuy.oiu.qert"

我想删除从字符串末尾开始直到“.”的字符。遇到。

预期输出:

wer.try.iuy.oiu

已尝试使用chop()substr 但没有任何作用..它仅删除最后一个字符。

请帮忙 :)

答案1

正则表达式非常适合解决此类问题:

$varin =~ s/\.[^.]+$//;

这匹配一个点,后跟几个非点,然后是字符串的结尾。然后删除匹配的内容。

另一种方法是找到最后一个.using rindex,然后使用 usesubstr删除点及其后面的所有内容:

my $i = rindex($varin,'.');
$varin = substr($varin,0,$i) if $i>0;

相关内容