在Perl中,我想在字符串末尾屏蔽/剪切X个字符(X可以是一组字符串中的一个)
我有两个字符串,XXXXXX编号和XXXXXX日期,我想从每个字符串中去掉所有XXXXXX。XXXXXX表示的实际字符数可能会有所不同。后缀“number”和“date”是常量。XXXXXX编号和XXXXXX日期应为XXXXXX。使用正则表达式:在Perl中,我想在字符串末尾屏蔽/剪切X个字符(X可以是一组字符串中的一个),perl,Perl,我有两个字符串,XXXXXX编号和XXXXXX日期,我想从每个字符串中去掉所有XXXXXX。XXXXXX表示的实际字符数可能会有所不同。后缀“number”和“date”是常量。XXXXXX编号和XXXXXX日期应为XXXXXX。使用正则表达式: ($newvar = $oldvar) =~ s/^(.*)(number|date)$/$1/; 如果对$oldvar的原始值(包括Xes)没有mor euse,则简化为 $oldvar =~ s/^(.*)(number|date)$/$1/;
($newvar = $oldvar) =~ s/^(.*)(number|date)$/$1/;
如果对$oldvar
的原始值(包括Xes)没有mor euse,则简化为
$oldvar =~ s/^(.*)(number|date)$/$1/;
或者:
$string =~ s/ (?:date|number) \z//x;
对于该任务,我将使用一个正则表达式,如
$line=~s/(number | date)$/
,其中$line
可以是任意一行
如果您的行在
编号
或日期
之后有其他字符,则也必须将它们过滤掉。另一种方法是使用类似于($num)=($line=~/^(.*)(number | date.*$/)的表达式代码>一个简单的替换即可:
$str =~ s/(?:number|date)\z/;
其他人使用了不必要的捕获((…)
),
而不使用/s
,以及$
(它不仅在字符串末尾匹配),而不是\z
。这些都是错误。
$str =~ s/(?:number|date)\z/;