使用正则表达式删除最多_ in perl?

Twi*_*erz 2 regex perl

如何在perl中的"_"之前删除所有字符?所以如果我有一个字符串是"124312412_hithere",它会将字符串替换为"hithere".我想有一个非常简单的方法来使用正则表达式,但我仍然是新的处理,所以我需要帮助.

ike*_*ami 6

删除所有字符,包括" _":

s/^[^_]*_//;
Run Code Online (Sandbox Code Playgroud)

删除" _" 之前的所有字符:

s/^[^_]*(?=_)//;
Run Code Online (Sandbox Code Playgroud)

删除" _" 之前的所有字符(假设存在" _"):

s/^[^_]*//;
Run Code Online (Sandbox Code Playgroud)


sam*_*hen 5

这比它需要的要冗长一些,但对于您了解正在发生的事情可能更有价值:

my $astring = "124312412_hithere";
my $find = "^[^_]*_";
my $replace = "_";

$astring  =~ s/$find/$replace/;

print $astring;
Run Code Online (Sandbox Code Playgroud)

此外,您的问题中有一些相互矛盾的要求。如果您只是想要hithere(没有前导_),则将其更改为:

$astring  =~ s/$find//;
Run Code Online (Sandbox Code Playgroud)